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版。我只想获取注释属性的长度,该属性是一个数组。
以下是问题文档样本:
{
"_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
}
代替获取的数组,我只想获取数组的长度。如果还有另一种不使用聚合的方式,那也可以::提前谢谢!
答案 0 :(得分:1)
尝试这样的事情。
Problem.aggregate([
{
$project: {
item: 1,
numberOfResults: { $size: "$comments" }
}
}
] )
看看https://docs.mongodb.com/manual/reference/operator/aggregation/size/