いくつかのコレクションにいくつかのリレーショナル レコードがあります。これにはオブジェクト ID を使用します。そして、コレクション検索機能なしでオブジェクトを検索したい。
このように db でグローバル検索機能を使用することは可能ですか?
db.globalfind({_id:"12345678901234567890"});
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);
}
}
}