MongoDB Aggregate Project +展开空数组

时间:2016-09-09 02:04:00

标签: node.js mongodb mongoose aggregation-framework

我解决了这个问题的作者与解决方案相同的问题,另一个人发布了答案: 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"},

这个问题还有其他/更新的解决方案吗? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我真的不了解你的问题,首先我会将汇总更改为:

{ $match: parameter},
  { $unwind : "$items" },
  { $project: {
    itemName: '$items.name'},
    itemValue : "$items.value",
    discount : { $cond : [ { $eq : ["$items.discounts", []}, [ null ], '$items.discounts'] } 
  }},  
  { $unwind: "$discount"}

以上对我有用。我建议你和你最喜欢的编辑或mongoshell一起尝试,看看它是否正常工作。