在Mongoose中,如何生成一个值为另一个字段数组长度的新字段?

时间:2018-02-08 06:44:30

标签: mongodb mongoose mongoose-populate

我有一个包含用户集的简单数据库。这就是文档的样子:

{
   username: "Joe",
   age: 20,
   friends: ["u2", "u5", "u6", "u7", "u11"]
}

我想创建一个返回类似

的查询
{
   username: "Joe",
   age: 20,
   total_friends: 5,
   friends: ["u2", "u5", "u6"]
}

请注意,我只对前3位朋友进行了切片,因为我不希望在每次查询中都返回所有用户朋友。

如何在切片之前创建total_friends字段?

这是我到目前为止所做的:

UserModel.findById( new Types.ObjectId(userId))
             // what goes here??
            .slice('friends', 3)
            .populate('friends')
            .exec((err, doc) => {...});

1 个答案:

答案 0 :(得分:1)

您可以使用聚合框架。试试这个:

Route::group(['prefix'=>'admin','namespace'=>''], function () {
    Route::get('route_group_test','AdminController@testingMiddleWare');
});

由于5个元素数组是管道阶段$size的输入,将返回5个元素,而$slice将在5个元素数组上运行,前三个。