#mongodb #mongoose #mongoose-schema
#mongodb #мангуст #mongoose-схема
Вопрос:
У меня есть два документа, как показано ниже
A = {
_id: <MongoDb ObjectId>
user: {
type: ObjectId,
ref: 'users'
}
.... <other property>
}
B = {
_id: <MongoDB ObjectId>
a: {
type: mongoose.Schema.Types.ObjectID
ref: 'a'
},
content: [
{
status: {
c: String
}
}
]
}
Мне нужно получить подробную информацию, включая b, где содержимое может быть пустым или статусным.c === ‘готово’ для пользователя.
Данные A должны содержаться в результате, b может быть пустым, если условие не выполняется
Я использую метод adapt ниже, но не могу получить желаемый результат
A.aggregate([
{
$match: {$expr: { $and: [ { user: <SomeDefinedID>} ]}}
},
{
$lookup: {
from: "b",
localField: "_id",
foreignField: "a",
as: 'b'
}
},
{
$unwind: "$b"
},
{
$match: {$expr: { $and: [ { $eq: [ "$b.content.status.c", "done" ] } ]}}
},
]).exec(console.log);
Иногда я получал пустой массив, хотя у меня есть запись в A, b может быть [] или результат ‘c’ как ‘done’.