복붙노트

[MONGODB] 어떻게 몽고 콘솔에서의 ObjectId가에 의해 객체를 검색 할 수 있습니까?

MONGODB

어떻게 몽고 콘솔에서의 ObjectId가에 의해 객체를 검색 할 수 있습니까?

내가 아니라 기본 인터페이스, C # 및 펄에 대한 대답이 질문을 발견했습니다. 나는이 일 것이라고 생각 :

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

쿼리 결과가 없습니다. 나는 db.theColl.find을하고 ()와 ObjectId가 잡는하여 4ecbe7f9e8c1c9092c000027을 발견했다. 이 컬렉션의 수천 개체가 있습니다.

나는 내가 mongodb.org 웹 사이트에서 찾을 수 있고 그것을 발견하지 않았다는 것을 모든 페이지를 읽었습니다. 할이 단지 이상한 일이 있습니까? 그것은 나에게 매우 일반적인 것 같다.

해결법

  1. ==============================

    1.전혀 이상하지, 사람들이 모든 시간을. 확인 컬렉션 이름은 올바른 (경우 문제)이며, ObjectId가 정확한입니다.

    전혀 이상하지, 사람들이 모든 시간을. 확인 컬렉션 이름은 올바른 (경우 문제)이며, 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 }
    
  2. ==============================

    2.당신은 Node.js를를 사용하는 경우 :

    당신은 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})
    

    편집 : 새로운 ObjectId가 (ID)가 아닌 새로운 OBJECTID (ID)로 수정

  3. ==============================

    3.특히 탭 완성과 함께, 더 쉬운 방법

    특히 탭 완성과 함께, 더 쉬운 방법

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

    편집 : 또한 예쁘게 출력의 findOne 명령으로 작동합니다.

  4. ==============================

    4.따옴표를 삽입 놓친 적이. 정확한 검색어는

    따옴표를 삽입 놓친 적이. 정확한 검색어는

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

    5.난 그냥이 문제를 가지고 문서화 된대로 정확하게 일을하고 그것은 여전히 ​​작동하지 않았다.

    난 그냥이 문제를 가지고 문서화 된대로 정확하게 일을하고 그것은 여전히 ​​작동하지 않았다.

    귀하의 오류 메시지를보고 확실히 당신은 어떤 특수 문자는 복사하지 않도록합니다. 제가 오류가 발생했다

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

    내가 문자 (43)에 갔을 때 그것은 열린 따옴표 후, 나는 그것을 붙여 그대로. 내가 거기에 내 커서를 놓고 히트 백 스페이스 아무것도가 오픈 견적을 제거해야 할 때 일이 나타나지 않았다, 단지 내 오브젝트 ID의 시작이었다. 다시 백 스페이스를 명중하고 그 다음에 내가의 인용 등을 넣어 쿼리를 실행하고 정확히 같은보고에도 불구하고, 일, 오픈 견적을 제거했습니다.

    나는 WebMatrix에서 개발을하고 콘솔에서 개체 ID를 복사되었습니다. 당신은 WebMatrix의 콘솔에서 복사 할 때마다 오류가 발생할 몇 가지 눈에 보이지 않는 문자를 선택할 가능성이있어.

  6. ==============================

    6.당신은 몽고의 CLI를 개설하면, 연결하고 오른쪽 데이터베이스에 승인했다.

    당신은 몽고의 CLI를 개설하면, 연결하고 오른쪽 데이터베이스에 승인했다.

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

    7.타일러 브록에서 답 : 당신이 몽고 쉘에서 작업하는 경우,이를 참조하십시오

    타일러 브록에서 답 : 당신이 몽고 쉘에서 작업하는 경우,이를 참조하십시오

    당신은 Node.js를를 사용하여 MongoDB를 사용하는 경우 나는 답을 썼다

    당신은 ObjectId가로 ID를 변환 할 필요가 없습니다. 그냥 사용 :

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

    이 수집 방법은 자동으로 ObjectId가로 ID를 변환합니다.

    한편 :

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

    즉 다음과 같이 수행 할 수 있습니다 :

    let id = '58c85d1b7932a14c7a0a320d';
    
    let o_id = new ObjectId(id);   // id as a string is passed
    
    db.collection.findOne({"_id":o_id});
    
  8. ==============================

    8.나는 당신에게이 같은 더 나은 쓰기 뭔가를 생각한다 :

    나는 당신에게이 같은 더 나은 쓰기 뭔가를 생각한다 :

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

    9.MongoDB의 스티치 기능에서는 아래처럼 BSON을 사용하여 수행 할 수 있습니다 :

    MongoDB의 스티치 기능에서는 아래처럼 BSON을 사용하여 수행 할 수 있습니다 :

    follwing을 예처럼이 목적을 위해 BSON 유틸리티 패키지 ObjectId가 도우미를 사용하여

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

    10.당신은 Node.js를를 사용하는 경우 :

    당신은 Node.js를를 사용하는 경우 :

    그 req.user에서 ObjectId가 형식입니다.

    var mongoose = require("mongoose");
    var ObjectId = mongoose.Schema.Types.ObjectId;
    
    function getUsers(req, res)
        User.findOne({"_id":req.user}, { password: 0 }) 
             .then(data => { 
                 res.send(data);})g
    }
    exports.getUsers = getUsers;
    
  11. ==============================

    11.OBJECTID 방법을 사용하려면 가져올 필요가 없습니다. 그것은 MongoDB의 객체에 이미.

    OBJECTID 방법을 사용하려면 가져올 필요가 없습니다. 그것은 MongoDB의 객체에 이미.

    VAR ObjectId가 = 새로운 db.ObjectId ( '58c85d1b7932a14c7a0a320d'); db.yourCollection.findOne ({_id : ObjectId가}, 기능 (ERR, 정보) {    CONSOLE.LOG (정보) });

  12. ==============================

    12.간단히 수행

    간단히 수행

    db.getCollection('test').find('4ecbe7f9e8c1c9092c000027');
    
  13. from https://stackoverflow.com/questions/8233014/how-do-i-search-for-an-object-by-its-objectid-in-the-mongo-console by cc-by-sa and MIT license