80

文字列MongoDBIDのリストを返すプロセスがあります。

[512d5793abb900bf3e20d012, 512d5793abb900bf3e20d011]

そして、Mongoに対して単一のクエリを実行し、一致するドキュメントをリストと同じ順序で取得したいと思います。

これを行うためのシェル表記は何ですか?

4

4 に答える 4

131

文字列をObjectIdsに変換した後、$in演算子を使用してリスト内のドキュメントを取得できます。ドキュメントをリストの順序に戻すためのクエリ表記はありませんが、それを処理するいくつかの方法については、ここを参照してください。

var ids = ['512d5793abb900bf3e20d012', '512d5793abb900bf3e20d011'];
var obj_ids = ids.map(function(id) { return ObjectId(id); });
db.test.find({_id: {$in: obj_ids}});
于 2013-02-27T04:44:50.083 に答える
4

これは、Robo3Tでは問題なく機能します。オブジェクトを作成する必要はなく、IDのリストを使用するだけです。

db.getCollection('my_collection').find({'_id':{$in:['aa37ba96']}})
于 2020-08-16T20:12:56.307 に答える
1

//リクエストでcategoryIdコンマ区切り「5c875c27d131b755d7abed86,5c875b0ad131b755d7abed81」

var ids= req.body.categoryId.split(','); 

db.test.find({ categoryId: { $in: ids } });
于 2019-03-12T12:51:27.607 に答える
0

最終的な目的がpre-getidsリストによる順序でドキュメントを取得することである場合は、クエリ結果をmapping(id as key、doc as value)に変換し、idsリストをトラバースしてドキュメントを取得できます。

于 2013-02-27T03:14:48.277 に答える