【发布时间】:2020-04-06 13:06:24
【问题描述】:
我有一个集合 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 添加的字段创建了一个 $match,但这会返回结果为 mongoDb 而不是 mongoose, 如何在 mongoose 中获得结果?谢谢。
猫鼬版本:^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 } },
]);
【问题讨论】:
-
可以为成员添加成员架构代码和示例文档吗?
-
上面的代码看起来不像是返回值或保存在任何变量中。
标签: node.js mongodb express mongoose aggregation-framework