Javascript 聚合缺少数据的嵌套文档

Javascript 聚合缺少数据的嵌套文档,javascript,mongodb,aggregation-framework,Javascript,Mongodb,Aggregation Framework,我有一个mongoDB集合,其中包含以下数据: { "_id" : ObjectId("..."), "records" : [ ISODate("2020-04-19T00:49:18.945Z"), { "_id" : ObjectId(""), "date" : ISODate("2020-05-07T04:49:55.643Z"), "text" : "someText

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

{
    "_id" : ObjectId("..."),
    "records" : [
        ISODate("2020-04-19T00:49:18.945Z"),
        {
            "_id" : ObjectId(""),
            "date" : ISODate("2020-05-07T04:49:55.643Z"),
            "text" : "someText"
        }
    ],
}
由于版本升级,
记录中的值不同

我想在所有文档中聚合
记录。文本
,忽略缺少的数据。源代码

抛出:

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.

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

您可以使用以下方法筛选出空值:


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

db.collection.aggregate({$unwind:$records},
{$project:{{{u id:1,'text':'$records.text'}})
我希望这对你有用

A pipeline stage specification object must contain exactly one field.
db.collection.aggregate([
    { $unwind: "$records" },
    { $match: { "records.text": { $exists: true } } },
    { $project: { _id: 1, text: "$records.text" }}
    {$group: {_id: "$text", count: {$sum: 1}}},
    {$sort: {count: -1}}
])