MongoDB/Mongoose 使用聚合获取对象数组属性的长度

彼得米尔
 Problem.aggregate(
    [
      { $unwind: "$comments" },
      {
        $group: {
          _id: "$_id",
          size: { $size: "$comments" }
        }
      }
    ],
    function(err, results) {
      console.log(err);
      console.log(results);
    }
  );

我尝试将 $size 与聚合一起使用,但出现此错误:

MongoError: 未知组运算符“$ size”。

我正在使用 mongodb 3.6 版。我只想获取数组的 comments 属性的长度。

这是一个示例问题文档:

{
    "_id": {
        "$oid": "5e02a2184a6e7f4980f47e8f"
    },
    "author": {
        "id": {
            "$oid": "5e027a4badd90919304a9eb0"
        }
    },
    "description": "testd",
    "gender": 0,
    "dailyUpvotes": 2,
    "tags": [
        {
            "_id": {
                "$oid": "5e02a2184a6e7f4980f47e90"
            },
            "name": "test"
        }
    ],
    "title": "test",
    "upVotes": 2,
    "comments": [
        {
            "_id": {
                "$oid": "5e03124933c17d406471d6f9"
            },
            "id": {
                "$oid": "5e03124933c17d406471d6f8"
            }
        }
    ],
    "upVotesList": [
        {
            "_id": {
                "$oid": "5e045a07745eb94b584d27e1"
            },
            "userID": {
                "$oid": "5e045a00745eb94b584d27e0"
            }
        },
        {
            "_id": {
                "$oid": "5e02a26b3cbe4e3794555f42"
            },
            "userID": {
                "$oid": "5e027a4badd90919304a9eb0"
            }
        }
    ],
    "createdAt": {
        "$date": "2019-12-24T23:41:12.707Z"
    },
    "updatedAt": {
        "$date": "2019-12-26T06:58:15.080Z"
    },
    "__v": 2
}

我只想获取数组的长度,而不是获取 的数组。如果有另一种不使用聚合的方法,那也很好:) 提前致谢!

拉姆普拉卡什

尝试这样的事情。

Problem.aggregate([
   {
      $project: {
         item: 1,
         numberOfResults: { $size: "$comments" }
      }
   }
] )

看看https://docs.mongodb.com/manual/reference/operator/aggregation/size/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章