Как получить объекты, разбросанные по полям массива на основе идентификаторов, сохраненных в массиве Js - PullRequest
0 голосов
/ 07 марта 2020

В моей базе данных есть коллекция с именем 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, разбросанные в полях vocaList в массив следующим образом:

const vocaIds = ['5e6351e43e5d0d08980e2207', '5e6351eb3e5d0d08980e2208', '5e6351f63e5d0d08980e2209']

Теперь я хочу получить объекты, разбросанные по полям vocaList, на основе идентификаторов, которые я сохранил в массиве vocaIds. Я пытался закодировать это так:

app.get('/saved-find', (req, res) => {
    SetVoca.find({ 'vocaList': { '_id': { $in: vocaIds } } }, (err, result) => {
        console.log(result);
    });
});

К сожалению, это не работает, поэтому я должен исправить это, чтобы запустить его. Большое спасибо.

1 Ответ

1 голос
/ 07 марта 2020

Вам нужно отправить свои идентификаторы, обернув их в ObjectId следующим образом

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);
    });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...