복붙노트

[MONGODB] 모음을 지정하지 않고 MongoDB의에서 문서를 가져 오기

MONGODB

모음을 지정하지 않고 MongoDB의에서 문서를 가져 오기

MongoDB의 ID는 단일 데이터베이스 클러스터에 대한 고유합니다. 이 컬렉션의 이름을 지정하지 않고, 자신의 ID를 사용하여 문서를 얻을 수 있습니까?

예라면, 어떻게?

어떤 경우에는, 왜?

해결법

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

    1.네,하지만 (각 수집을 조회해야하기 때문에) 확장 가능한 방식이다. 당신은 2 개 또는 3 컬렉션이있는 경우, 이것은 당신이 아마 당신이이 일을하는 이유를 파악하기 위해 설계를 검토해야합니다 ... 확인 될 수 있지만 수 있습니다. 왜 그런데,입니까?

    네,하지만 (각 수집을 조회해야하기 때문에) 확장 가능한 방식이다. 당신은 2 개 또는 3 컬렉션이있는 경우, 이것은 당신이 아마 당신이이 일을하는 이유를 파악하기 위해 설계를 검토해야합니다 ... 확인 될 수 있지만 수 있습니다. 왜 그런데,입니까?

    샘플 쉘 코드 :

    db.test1.save({});
    db.test2.save({});  
    db.test3.save({});
    db.test4.save({});
    db.test5.save({}); 
    db.test6.save({});
    
    db.test2.findOne(); // gives: { "_id" : ObjectId("4f62635623809b75e6b8853c") }
    
    db.getCollectionNames().forEach(function(collName) {
       var doc = db.getCollection(collName).findOne({"_id" : ObjectId("4f62635623809b75e6b8853c")});
       if(doc != null) print(doc._id + " was found in " + collName); 
    });  
    

    제공 : 4f62635623809b75e6b8853c은 TEST2에서 발견되었다

  2. ==============================

    2.ObjectId가 세계적으로 독특한 (전 세계뿐 아니라 단일 클러스터 내에서) 할 수 있도록 설계되어있다. 그리고 그것은 꽤 많이 있습니다.

    ObjectId가 세계적으로 독특한 (전 세계뿐 아니라 단일 클러스터 내에서) 할 수 있도록 설계되어있다. 그리고 그것은 꽤 많이 있습니다.

    그것은 시간, 컴퓨터 ID, 프로세스 ID 및 임의의 숫자를 포함하고 있습니다. 그러나, 데이터베이스 또는 컬렉션 이름은 포함되지 않습니다. 따라서, 단지 ID를 사용하여 문서를 가져 오는 것은 불가능합니다. 당신은뿐만 아니라 데이터베이스 및 수집 이름을 제공해야합니다.

  3. from https://stackoverflow.com/questions/9728196/get-a-document-in-mongodb-without-specifying-collection by cc-by-sa and MIT license