所以我有一个文档,它引用了可能指向其他文档或集合的外部ObjectID。
例如,这是文档的伪结构
{
_id: ObjectID(xxxxxxxx),
....
reference: ObjectID(yyyyyyyy)
}
我无法找到任何不涉及提供收藏品的内容,并且鉴于我不确定要搜索哪个收藏品,我想知道是否有办法让我找到该文件在整个数据库中找到ObjectID(yyyyyyyy)所属的集合。
答案 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);
});