1. ホーム
  2. node.js

[解決済み] mongodb/mongoose findMany - 配列にリストされたIDを持つすべてのドキュメントを検索する。

2022-03-27 10:35:03

質問

私は_idsの配列を持っており、私はそれに応じてすべてのドキュメントを取得したいのですが、それを行うための最良の方法は何ですか?

次のようなものです。

// doesn't work ... of course ...

model.find({
    '_id' : [
        '4ed3ede8844f0f351100000c',
        '4ed3f117a844e0471100000d', 
        '4ed3f18132f50c491100000e'
    ]
}, function(err, docs){
    console.log(docs);
});

配列には何百もの_idが含まれるかもしれません。

どのように解決するのですか?

その find 関数はmongoDBへの完全なクエリです。 つまり、便利な mongoDB の $in 節があり、これは SQL 版と同じように機能します。

model.find({
    '_id': { $in: [
        mongoose.Types.ObjectId('4ed3ede8844f0f351100000c'),
        mongoose.Types.ObjectId('4ed3f117a844e0471100000d'), 
        mongoose.Types.ObjectId('4ed3f18132f50c491100000e')
    ]}
}, function(err, docs){
     console.log(docs);
});

この方法は、数万個のidを含む配列でもうまくいきます。 (参照 レコードの所有者を効率的に決定する )

を使用している人は、ぜひ mongoDB を読んでください。 高度なクエリ のセクションでは、優れた mongoDB公式ドキュメント