programing

mongo 콘솔에서 오브젝트 ID를 사용하여 오브젝트를 검색하려면 어떻게 해야 합니까?

abcjava 2023. 3. 7. 20:57
반응형

mongo 콘솔에서 오브젝트 ID를 사용하여 오브젝트를 검색하려면 어떻게 해야 합니까?

이 질문은 C# 및 Perl에 대한 답변이지만 네이티브인터페이스에서는 답변되지 않았습니다.난 이게 효과가 있을 줄 알았어

db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } )

쿼리에서 결과가 반환되지 않았습니다.4ecbe7f9e8c1c9092c000027을 찾았습니다.db.theColl.find()ObjectId를 잡습니다.그 컬렉션에는 수천 개의 물건이 있다.

mongodb.org 웹사이트에서 찾을 수 있는 모든 페이지를 읽었지만 찾을 수 없었습니다.이게 이상한 일인가요?나한텐 꽤 정상적인 것 같아.

전혀 이상하지 않아, 사람들은 항상 이런 짓을 해.수집 이름이 올바르고(대문자와 소문자가 구분됨) ObjectId가 정확한지 확인하십시오.

매뉴얼은 이쪽

> db.test.insert({x: 1})

> db.test.find()                                               // no criteria
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }      

> db.test.find({"_id" : ObjectId("4ecc05e55dd98a436ddcc47c")}) // explicit
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

> db.test.find(ObjectId("4ecc05e55dd98a436ddcc47c"))           // shortcut
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

Node.js를 사용하는 경우:

var ObjectId = require('mongodb').ObjectId; 
var id = req.params.gonderi_id;       
var o_id = new ObjectId(id);
db.test.find({_id:o_id})

편집: 새 개체가 아닌 새 개체 ID(ID)로 수정되었습니다.아이디(ID)

특히 탭이 완성되어 있는 경우는, 한층 더 간단하게 할 수 있습니다.

db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))

편집: 와도 동작합니다.findOne명령어를 사용하여 출력을 향상시킬 수 있습니다.

큰따옴표를 삽입하지 못했습니다.정확한 쿼리는

db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )

mongo 쉘을 작업하는 경우 다음을 참조하십시오: Tyler Brock의 답변

node.js를 사용하여 mongodb를 사용하는 경우 답변을 작성했습니다.

ID를 Id로 변환할 필요가 없습니다.ObjectId. 사용방법 :

db.collection.findById('4ecbe7f9e8c1c9092c000027');

이 수집 메서드는 ID를 ObjectId로 자동 변환합니다.

한편, 다음과 같습니다.

db.collection.findOne({"_id":'4ecbe7f9e8c1c9092c000027'})예상대로 작동하지 않습니다.ID를 수동으로 변환했습니다.ObjectId.

다음과 같이 할 수 있습니다.

let id = '58c85d1b7932a14c7a0a320d';

let o_id = new ObjectId(id);   // id as a string is passed

db.collection.findOne({"_id":o_id});

이렇게 쓰는 게 좋을 것 같아

db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})

mongo CLI를 열면 올바른 데이터베이스로 연결되고 인증됩니다.

다음 예시는 "products"라는 컬렉션에서 _id=568c28ffc4be30d44d0398e의 문서를 찾는 방법을 보여 줍니다.

db.products.find({"_id": ObjectId("568c28fffc4be30d44d0398e")})

방금 이 문제가 발생했는데 문서화된 대로 실행 중이었는데도 여전히 작동하지 않았습니다.

오류 메시지를 보고 특수 문자가 복사되지 않았는지 확인하십시오.에러가 발생하고 있었다.

SyntaxError: illegal character @(shell):1:43

캐릭터 43으로 이동했을 때 오브젝트 ID의 시작 부분이었고, 오픈 따옴표 뒤에 붙여 넣은 그대로였습니다.커서를 거기에 놓고 백스페이스를 눌렀는데 오픈인테이트를 삭제했어야 하는데 아무 일도 일어나지 않는 것 같았습니다.백스페이스를 다시 누르면 오픈인테이트가 삭제되고 다시 인용문을 삽입하여 쿼리를 실행했더니 완전히 똑같아 보였는데도 효과가 있었습니다.

WebMatrix에서 개발을 하고 있었는데 콘솔에서 오브젝트 ID를 복사했습니다.WebMatrix 콘솔에서 복사할 때마다 오류가 발생할 수 있는 보이지 않는 문자가 나타날 수 있습니다.

MongoDB Stitch 기능에서는 다음과 같이 BSON을 사용하여 수행할 수 있습니다.

하다를 사용하세요.ObjectId다음 예시와 같이 BSON 유틸리티 패키지의 도우미입니다.

var id = "5bb9e9f84186b222c8901149";  
BSON.ObjectId(id);

★★★의 Pythonists:

import pymongo
from bson.objectid import ObjectId

...

for row in collectionName.find(
        {"_id" : ObjectId("63ae807ec4270c7a0b0f2c4f")}):
    print(row)

Objectid 메서드를 사용하려면 Import할 필요가 없습니다.그것은 이미 mongodb 오브젝트에 있다.

var ObjectId = new db.ObjectId('58c85d1b7932a14c7a0a320d');
db.yourCollection.findOne({ _id: ObjectId }, function (err, info) {
   console.log(info)
});
               

간단한 조작:

db.getCollection('test').find('4ecbe7f9e8c1c9092c000027');

언급URL : https://stackoverflow.com/questions/8233014/how-do-i-search-for-an-object-by-its-objectid-in-the-mongo-console

반응형