MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Obtenha um documento no MongoDB sem especificar a coleção


Sim, mas não de forma escalável (já que você deve consultar cada coleção). Se você tiver 2 ou 3 coleções, isso pode ser bom, mas... você provavelmente deve revisar seu design para descobrir por que está fazendo isso. Por que você está, aliás?
  1. Você obtém uma lista de todas as coleções no banco de dados.
  2. Você faz um loop por eles e consulta com base em _id

Código de shell de exemplo:
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