mongodb 数据库中所有列表的总长度

mongodb sum length of all lists in a database

我对 mongo 聚合还很陌生,我遇到了一些相对无用的错误,而且我还没有找到任何明确的例子。简而言之,我有一个集合user_data,文档是这样排列的:

{
    _id: ObjectID,
    text: [#Documents],
    username: "<string>",
    metadata: {<fields>}
}

基本上,我要计算此集合中存在的文档总数。这些文件都在文本字段下。我觉得合并 $sum$size 选择器非常接近,这就是我现在拥有的:

db.user_data.aggregate([{$sum: {$size: "$text"}}])

这似乎至少是在正确的轨道上,但是 运行 我收到此错误消息:

command failed: {
    "errmsg" : "exception: Unrecognized pipeline stage name: '$sum'",
    "code" : 16436,
    "ok" : 0
} : aggregate failed at src/mongo/shell/assert.js:13

非常感谢任何帮助。同样,聚合非常新。

您使用 $sum$size 的想法是正确的,但您需要将其放在 $group 运算符中:

db.user_data.aggregate([
    {$group: {
        _id: null,
        count: {$sum: {$size: "$text"}}
    }}
])

_id: null 用于对整个集合而不是特定字段进行分组。