mon goose найти коллекцию по _id в списке массивов - PullRequest
0 голосов
/ 19 февраля 2020

Вот моя схема

var PositiveSchema = new mongoose.Schema({
    schoolID: {
        type: mongoose.Schema.Types.ObjectId, ref: 'School'
    },
    name: String,
    restrictAwardTo: Object
})

Теперь restrictAwardTo сохраняет данные в этом формате

"restrictAwardTo" : [ 
        {
            "_id" : "5c31907d908eb8404657cbf0",
            "firstName" : "Admin 2a"
        }, 
        {
            "_id" : "5c1a7677c98da061141475a8",
            "firstName" : "Justice"
        }, 
        {
            "_id" : "5c1a7677c98da061141475a9",
            "firstName" : "Itik"
        }
    ],

Как я могу искать внутри моего документа, используя один из _id, перечисленных в restrictAwardTo? Я попробовал решения, приведенные ниже

Обновление: в Robo3t этот запрос db.getCollection('positives').find({ 'restrictAwardTo._id' : {$in: ['5c1a7677c98da061141475a7']} }) работает. Теперь я заставляю его работать и в понедельник goose.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2020

Вы можете go таким образом.

Positive.findOne({'restrictAwardTo': {$elemMatch: {_id: userID}}}, 
        (err,schoolInfo) => { });
0 голосов
/ 19 февраля 2020

Вот мой goose, который работает для меня:

Positive.find({ schoolID:  mongoose.mongo.ObjectId(schoolID), "restrictAwardTo._id": { $in: [userID]} })

Но я не совсем уверен в производительности для больших записей.

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