はい。ただし、スケーラブルな方法ではありません(各コレクションにクエリを実行する必要があるため)。コレクションが2つか3つある場合は、これで問題ないかもしれませんが、デザインを確認して、なぜこれを行っているのかを理解する必要があります。ところで、なぜあなたは?
- データベース内のすべてのコレクションのリストを取得します。
- それらをループし、_idに基づいてクエリを実行します
サンプルシェルコード:
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 was found in test2