我在一些收藏中有一些关系记录。我为此使用对象 ID。我想找到一个没有集合查找功能的对象。
是否可以像这样在 db 上使用全局查找功能?
db.globalfind({_id:"12345678901234567890"});
MongoDB 中的操作只对一个集合起作用。如果要对多个集合进行查找,则需要运行多个查询 - 每个集合一个。当然,Mongoose 可以为此实现一个便利功能,但我认为它没有,也不应该,因为它违反了 MongoDB 的范例之一。
MongoDB 并不真正支持根据它的 objectID 获取任意文档。但是,您可以使用下面的代码来搜索整个数据库:
var objectID = ObjectId("53623db53004e212edcc8fe6");
var findMultiple = true;
// ----------------------- code -----------------------
var stack = [];
db.getCollectionNames().forEach(function(collName) {
var docs = db.getCollection(collName).find();
docs.forEach(function(doc) {
doc._FROM = collName;
stack.push(doc);
});
});
while(stack.length > 0) {
var doc = stack.pop();
if(doc._id) {
if(doc._id.toString() === objectID.toString()) {
print(doc);
if(!findMultiple) {
stack = [];
}
}
}
for (var property in doc) {
var value = doc[property];
var type = Object.prototype.toString.call(value);
if (type === '[object Object]' || type === '[object Array]' || type ==='[object bson_object]') {
value._FROM = doc._FROM + "/" + property;
stack.push(value);
}
}
}