Имея вот такую схему статей с суб документами комментариев, нужно выбрать только определенных авторов
article: {
text: {type: String, require: true},
comments: [{
text: {type: String, required: true},
user_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'users'
}
}],
created_at: { type: Date, "default": Date.now}
},
Написал вот такой запрос
db.getCollection('article').findOne({
'_id': ObjectId("564680c59bfd4a0a49745282"),
'comments.user_id': {$in : [ObjectId("563e3337e2bf6c431b297d41"), ObjectId("563e3337e2bf6c431b297d42")]}
})
ожидал увидеть комментарии только этих авторов, но вижу от всех. Видимо по 1 условию с Ид, монго вытаскивает все данные за эту статью, я пошел дальше, написал такой запрос
db.getCollection('article').find(
{'_id': ObjectId("564680c59bfd4a0a49745282")},
{ comments : { $elemMatch: { user_id : {$in : [ObjectId("563e3337e2bf6c431b297d41"),ObjectId("563e3337e2bf6c431b297d42") ]}} } }
)
но так же все не корректно, возвращает только 1 запись
подскажите пожалуйста как решить эту на первый взгляд простую задачу.