MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ottieni un documento in MongoDB senza specificare la raccolta

Sì, ma non in modo scalabile (poiché è necessario interrogare ogni raccolta). Se hai 2 o 3 collezioni, potrebbe andare bene, ma... probabilmente dovresti rivedere il tuo design per capire perché lo stai facendo. Perché sei tu, a proposito?

  1. Ottieni un elenco di tutte le raccolte nel database.
  2. Li passi in rassegna e interroghi in base a _id

Esempio di codice shell:

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); 
});  

dà:4f62635623809b75e6b8853c was found in test2