MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Obtenir un document dans MongoDB sans spécifier de collection

Oui, mais pas de manière évolutive (puisque vous devez interroger chaque collection). Si vous avez 2 ou 3 collections, cela peut convenir, mais... vous devriez probablement revoir votre conception pour comprendre pourquoi vous faites cela. Pourquoi êtes-vous, au fait ?

  1. Vous obtenez une liste de toutes les collections de la base de données.
  2. Vous les parcourez en boucle et effectuez une requête basée sur _id

Exemple de code 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); 
});  

donne :4f62635623809b75e6b8853c was found in test2