问题描述
我有一个mongo查询,
try {
const reviews = await Entity.aggregate([
{ $match: { cities: ObjectId(req.params.cityId),public: true } },{
$lookup: {
from: 'reviews',localField: '_id',foreignField: 'entityId',as: 'avgRating',},{
$addFields: {
avgRating: {
$avg: {
$map: {
input: '$avgRating',in: '$$this.rating',{
$project: {
admin: 0,createdAt: 0,updatedAt: 0,]);
res.send(reviews);
} catch (e) {
res.status(500).send();
}
它工作正常,但是在addFields
中我想再添加一个名为noOfReviews
的字段,该字段将包含从$match
和$lookup
获得的响应总数。 >
我尝试过
totalCount: [
{ $group: { _id: null,count: { $sum: 1 } } },]
我将其放在addFields
之后的avg
里面,但这没用。
我该怎么办?
解决方法
您可以使用$size
运算符来获取数组的计数,表示avgRating
数组的续值,
- 将其添加到
$addFields
{
$addFields: {
noOfReviews: {
$size: "$avgRating"
},avgRating: ... // skipping
}
},