У меня есть коллекция myCollection с массивом членов и количеством мест:
{
name : String,
members: [{status : Number, memberId : {type: Schema.Types.ObjectId, ref: 'members'}],
nbPlaces : Number
}
, и у меня есть эти данные
"_id" : ObjectId("5e83791eb49ab07a48e0282b")
"members" : [
{
"status" : 1,
"_id" : ObjectId("5e83791eb49ab07a48e0282c"),
"memberId" : ObjectId("5e7dbf5b257e6b18a62f2da9")
},
{
"status" : 2,
"_id" : ObjectId("5e837944b49ab07a48e0282d"),
"memberId" : ObjectId("5e7de2dbe027f43adf678db8")
}
],
"nbPlaces": 5
Я делаю $ матч с полем, добавленным $ addFields , но это возвращает результаты в mongoDb, а не в mon goose. Как я могу получить результаты в mon goose? спасибо.
пн goose версия: ^ 5.9.4 "
myCollection.aggregate([
{
$project: {
nbMembers: {
$size: {
$filter: {
input: "$members",
as: "member",
cond: { $eq: ["$$member.status", 1] },
},
},
},
nbPlaces: 1,
},
},
{
$addFields: {
charged: {
$cond: {
if: { $eq: [{ $subtract: ["$nbPlaces", "$nbMembers"] }, 0] },
then: true,
else: false,
},
},
},
},
{ $match: { _id: ObjectId("5e83791eb49ab07a48e0282b"), charged: false } },
]);