在给定ObjectID但不是集合的情况下查询或命令查找Document

时间:2014-04-20 06:31:54

标签: mongodb mongodb-query

所以我有一个文档,它引用了可能指向其他文档或集合的外部ObjectID。

例如,这是文档的伪结构

{
    _id: ObjectID(xxxxxxxx),
    ....
    reference: ObjectID(yyyyyyyy)

}

我无法找到任何不涉及提供收藏品的内容,并且鉴于我不确定要搜索哪个收藏品,我想知道是否有办法让我找到该文件在整个数据库中找到ObjectID(yyyyyyyy)所属的集合。

2 个答案:

答案 0 :(得分:1)

唯一可行的方法是列出数据库中的每个集合,并在每个集合上执行db.collection.find()

E.g。在Mongo shell中我会做类似

的事情
var result = new Array();
var collections = db.getCollectionNames();

for (var i = 0; i < collections.length; i++) {
    var found = db.getCollection(collections[i]).findOne({ "_id" : ObjectId("yyyyyyyy") });
    if (found) {
        result.push(found);
    }
}

print(result);

答案 1 :(得分:0)

您需要对数据库中的所有集合运行查询。

db.getCollectionNames().forEach(function(collection){
    db[collection].find({ $or : [ 
                            { _id : ObjectId("535372b537e6210c53005ee5") },
                            { reference : ObjectId("535372b537e6210c53005ee5")}]
    }).forEach(printjson);
});