我解决了这个问题的作者与解决方案相同的问题,另一个人发布了答案: Unwind empty array in mongodb
这些天我更新了我的mongodb / mongoose,现在我收到了一个错误:
MongoError:顶级_id字段是当前支持排除的唯一字段
似乎mongo试图"排除"现在因为0值而从项目中的这个字段。
我需要添加一个带有{value:0}的对象的数组,因为否则在展开后该对象将被忽略。
{ $match: parameter},
{ $unwind : "$items" },
{ $project: {
itemName: '$items.name'},
itemValue : "$items.value",
discount : { $cond : [ { $eq : ["$items.discounts", [] ]}, [ { value : 0} ], '$items.discounts'] }
}},
{ $unwind: "$discount"},
这个问题还有其他/更新的解决方案吗? 谢谢你的帮助。
答案 0 :(得分:0)
我真的不了解你的问题,首先我会将汇总更改为:
{ $match: parameter},
{ $unwind : "$items" },
{ $project: {
itemName: '$items.name'},
itemValue : "$items.value",
discount : { $cond : [ { $eq : ["$items.discounts", []}, [ null ], '$items.discounts'] }
}},
{ $unwind: "$discount"}
以上对我有用。我建议你和你最喜欢的编辑或mongoshell一起尝试,看看它是否正常工作。