Manhクオン:
私のデータベースでは、名前のコレクションがありSetVoca
、次のようにその構造があるが、:
{
"_id" : ObjectId("5e63518c3e5d0d08980e2203"),
"lessonId" : "5e63518c3e5d0d08980e2201",
"vocaList" : [
{
"_id" : ObjectId("5e6351e43e5d0d08980e2207"),
"word" : "a",
"type" : "a",
"meaning" : "a",
"sente" : "a",
"semean" : "a",
"sug" : "a"
},
{
"_id" : ObjectId("5e6351eb3e5d0d08980e2208"),
"word" : "b",
"type" : "b",
"meaning" : "b",
"sente" : "b",
"semean" : "b",
"sug" : "b"
}
],
"__v" : 0
}
/* 2 */
{
"_id" : ObjectId("5e6351be3e5d0d08980e2206"),
"lessonId" : "5e6351be3e5d0d08980e2204",
"vocaList" : [
{
"_id" : ObjectId("5e6351f63e5d0d08980e2209"),
"word" : "c",
"type" : "c",
"meaning" : "c",
"sente" : "c",
"semean" : "c",
"sug" : "c"
}
],
"__v" : 0
}
次のように私は今、配列にボーカリストのフィールドに散らばったObjectId値が設定されています
const vocaIds = ['5e6351e43e5d0d08980e2207', '5e6351eb3e5d0d08980e2208', '5e6351f63e5d0d08980e2209']
今、私は中に散らばったオブジェクト取得したいvocaList
私が保存されていることをIDに基づいてフィールドをvocaIds
配列。私はこのようにそれをコーディングしてみました:
app.get('/saved-find', (req, res) => {
SetVoca.find({ 'vocaList': { '_id': { $in: vocaIds } } }, (err, result) => {
console.log(result);
});
});
私はそれを実行するためにそれを修正する必要がありますので、残念ながらそれは、動作しません。どうもありがとうございました。
アシシュモディ:
あなたはこのようのObjectIdでそれらをラップすることによって、あなたのIDを送信する必要があります
const vocaIds = [mongoose.Types.ObjectId('5e6351e43e5d0d08980e2207'), mongoose.Types.ObjectId('5e6351eb3e5d0d08980e2208'), mongoose.Types.ObjectId('5e6351f63e5d0d08980e2209')]
そして、クエリで次のように行います
SetVoca.find({ 'vocaList._id': { $in: vocaIds } }, (err, result) => {
console.log(result);
});