MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Rufen Sie ein Dokument in MongoDB ab, ohne eine Sammlung anzugeben

Ja, aber nicht skalierbar (da Sie jede Sammlung abfragen müssen). Wenn Sie 2 oder 3 Sammlungen haben, ist dies möglicherweise in Ordnung, aber ... Sie sollten wahrscheinlich Ihr Design überprüfen, um herauszufinden, warum Sie dies tun. Warum übrigens du?

  1. Sie erhalten eine Liste aller Sammlungen in der Datenbank.
  2. Sie durchlaufen sie in einer Schleife und fragen basierend auf _id
  3. ab

Beispiel-Shell-Code:

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

ergibt:4f62635623809b75e6b8853c was found in test2