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

标签 mongodb database nosql

MongoDB ID 对于单个数据库集群是唯一的。是否可以在不指定集合名称的情况下使用其 ID 获取文档?

如果是,怎么做?

如果没有,为什么不呢?

最佳答案

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

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

示异常(exception)壳代码:

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

给出:4f62635623809b75e6b8853c 在 test2 中找到

关于mongodb - 在 MongoDB 中获取文档而不指定集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9728196/

相关文章:

mongodb - 为什么当我在 MongoDB 的控制台上按下 "up"时,它不会循环执行我之前的命令?

mongodb - 评估什么是适合我的 NoSQL 数据库的聪明方法?

database - 从 MS Access ado.net 返回多个结果集

java - 使用 Spring 在 JSP 中显示图像

Android SQLite 数据库设置错误?

arangodb - 1000+用户,30+私密数据集

cassandra - 摆脱有关 NoSQL 数据库的困惑

php - mongodb从不同的数据库中选择

mongodb - 如何运行 mongo-express(无需身份验证)?

java - MongoDB 插入和更新字段