【问题标题】:Mongodb deep nested array countMongodb 深度嵌套数组计数
【发布时间】:2019-05-05 05:25:04
【问题描述】:

我有一个简单的查询:

[
    user:{
       _id     : ObjectId('5c058b38365f0e1a0848d61d')
       receipts:[1,2,3,4,5,6,7]
    },
    user:{
       _id     : ObjectId('5c058b38365f0e1a0848ty56')
       receipts:[1,2,3,4,5]
    },
]

我需要获取收据的数组长度,我尝试了一些我在网上找到的代码,但它们都不起作用,这里我有一个较短的代码:

mongo.collection('links').aggregate([{
                $match:{_id: mongo.ObjectId('5c058b38365f0e1a0848d61d')},
                $project: {
                    usersCount: {
                        $size: "$users.receipts"
                    }
                }
}]).toArray(function(err, results) {
               console.log(err,results);
});

我得到错误:

**{ MongoError: 一个管道阶段规范对象必须只包含一个字段。

at process._tickCallback (internal/process/next_tick.js:61:11)   ok: 0,   errmsg:    'A pipeline stage specification object must

只包含一个字段。',代码:40323,代号: 'Location40323',名称:'MongoError',
[Symbol(mongoErrorContextSymbol)]: {} } 空**

谢谢

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您缺少一堆大括号,这就是您看到异常的原因。以下应该有效:

    [{
        $match: {
            _id: mongo.ObjectId('5c058b38365f0e1a0848d61d')
        }
    }, {
        $project: {
            "usersCount": { $size: "$data.user.receipts" }
        }
    }]
    

    【讨论】:

    • 对不起,我写错了查询,它应该是一个用户数组,我编辑了问题,thx:)
    • 您的主要问题与缺少大括号有关。如果您可以发布一份完整的示例文档,我也可以为您提供正确的查询。
    • 是的,我现在看到了,我想我已经老了:(((无论如何谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2020-09-24
    相关资源
    最近更新 更多