在MongoDB中获取文档而不指定集合

sss*_*ver 7 database mongodb nosql

MongoDB ID对于单个数据库群集是唯一的.是否可以使用其ID来获取文档,而无需指定集合名称?

如果有,怎么样?

如果不是,为什么不呢?

Eve*_*man 9

是的,但不是以可扩展的方式(因为您必须查询每个集合).如果您有2个或3个集合,这可能没问题,但是......您可能应该检查您的设计以找出您为什么这样做.顺便问一下,你为什么这样?

  1. 您将获得数据库中所有集合的列表.
  2. 您循环遍历它们,并基于_id进行查询

示例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); 
});  
Run Code Online (Sandbox Code Playgroud)

得到: 4f62635623809b75e6b8853c was found in test2