Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongo将$slice聚合为特定值,而不是数组_Javascript_Arrays_Mongodb_Mongoose_Slice - Fatal编程技术网

Javascript Mongo将$slice聚合为特定值,而不是数组

Javascript Mongo将$slice聚合为特定值,而不是数组,javascript,arrays,mongodb,mongoose,slice,Javascript,Arrays,Mongodb,Mongoose,Slice,我收藏了一份文件: { "_id" : ObjectId("5b8aaaebf57de10e080c9151"), "user_email" : "temp@temp.com", "platforms_budget" : [ { "_id" : ObjectId("5b8aaaebf57de10e080c9154"), "platform_id" : "f_01", "platf

我收藏了一份文件:

  {
    "_id" : ObjectId("5b8aaaebf57de10e080c9151"),
    "user_email" : "temp@temp.com",
    "platforms_budget" : [ 
        {
            "_id" : ObjectId("5b8aaaebf57de10e080c9154"),
            "platform_id" : "f_01",
            "platform_name" : "Facebook"
        }, 
        {
            "_id" : ObjectId("5b8aaaebf57de10e080c9153"),
            "platform_id" : "i_01",
            "platform_name" : "Instagram"
        }, 
        {
            "_id" : ObjectId("5b8aaaebf57de10e080c9152"),
            "platform_id" : "f_02",
            "platform_name" : "Facebook_Adds"

        }
    ],
    "__v" : 0
    }
我想通过“用户电子邮件”查找特定用户,并仅获取相关“平台预算”数组的长度

我的功能是这样的:

var BudgetSchema = require('../models/Budget');

  router.post('/temp', async function (req, res) {
  var length = await BudgetSchema.aggregate(
    [{ $match: { user_email: "test@test.com" } },
    { $project: { "count": { $size: '$platforms_budget' } } }])

  console.log(length);
})
我得到的结果是:

[ { _id: 5b8aaaebf57de10e080c9151, count: 3 } ]
但是我只想得到一个数字的大小,像这样:3

我想要得到的输出是:

 3
我知道我可以使用操作符,但我不知道如何正确使用它。有什么想法吗?
谢谢。

您的聚合应该是这样的

BudgetSchema.aggregate([
  { "$match": { "user_email": "test@test.com" } },
  { "$project": { "count": { "$size": "$platforms_budget" }}}
])
输出

[ { _id: "5b8aaaebf57de10e080c9151", count: 3 } ]
[3]
如果要将其作为数组值

const budget = (await BudgetSchema.aggregate([
  { "$match": { "user_email": "test@test.com" } },
  { "$project": { "count": { "$size": "$platforms_budget" }}}
])).map(({ count }) => count)
输出

[ { _id: "5b8aaaebf57de10e080c9151", count: 3 } ]
[3]

是的,谢谢。我想减少输出,只接受“3”或以任何其他方式从响应中提取它。我更新了我的问题。我希望现在更清楚了。您的输出不是有效的json。。。MongoDB本身只返回BSON文档,简单的“字符串或整数”不是BSON文档。是的!非常感谢你的帮助。