首页 > 解决方案 > 聚合缺少数据的嵌套文档

问题描述

我有一个 mongoDB 集合,其中包含以下数据:

{
    "_id" : ObjectId("..."),
    "records" : [
        ISODate("2020-04-19T00:49:18.945Z"),
        {
            "_id" : ObjectId(""),
            "date" : ISODate("2020-05-07T04:49:55.643Z"),
            "text" : "someText"
        }
    ],
}

records因版本升级不同,数值不同。

我想汇总records.text所有文档,忽略丢失的数据。来自MongoDB 的代码:聚合和展平数组字段

db.collection.aggregate({$unwind : "records"},
                      {$project: {_id: 1, 'text': '$records.text'}})

抛出:

path option to $unwind stage should be prefixed with a '$': records

并从这些方向修复错误以适应空字段:

db.collection.aggregate({$unwind : "records", includeEmpty: false},
                      {$project: {_id: 1, 'text': '$records.text'}})

投掷

A pipeline stage specification object must contain exactly one field.

如何聚合嵌套数组中可能为空值的值?

标签: javascriptmongodbaggregation-framework

解决方案


在您的第一个查询中,您缺少“$”,因为记录是一个字段值,所以您应该在它前面加上“$”。最终查询将是:

db.collection.aggregate({$unwind : "$records"},
                      {$project: {_id: 1, 'text': '$records.text'}})

我希望这对你有用。


推荐阅读