【问题标题】:MongoDB Aggregate Project + Unwind empty arrayMongoDB聚合项目+展开空数组
【发布时间】:2017-06-23 19:27:06
【问题描述】:

我解决了这个问题的作者与其他人作为答案发布的解决方案相同的问题: Unwind empty array in mongodb

这些天我更新了我的 mongodb/mongoose,现在我收到了一个错误:

MongoError:顶级 _id 字段是当前唯一支持排除的字段

由于值为 0,mongo 现在似乎试图从项目中“排除”该字段。

我需要添加一个带有 {value:0} 对象的数组,否则展开后该对象将被忽略。

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

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

【问题讨论】:

  • 您能否edit您的问题包括一些用于测试的示例文档以及这些文档的预期输出?

标签: node.js mongodb mongoose aggregation-framework


【解决方案1】:

我不太了解您的问题,首先我会将聚合更改为:

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

以上对我有用。我建议您使用您最喜欢的编辑器或在 mongoshell 中尝试它并检查它是否正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2019-04-10
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多