如何限制组查询中返回对象的数量

时间:2019-04-07 17:30:02

标签: mongodb mongodb-query aggregation-framework

我有一个Mongodb数据库,其中包含数百条记录,每条记录都有一个字段“ pauseTime”的值。我想计算每个pauseTime值的记录数。但是我想将查询限制到其中pauseTime大于50而小于150的文档。

到目前为止,我计算了pauseTime的每个值的数量。

这是数据库的记录:


{
    "_id" : ObjectId("5ca74a95a094b08e97bd1278"),
    "duration" : NumberInt(857),
    "videoUrl" : "https://vimeo.com/3766858",
    "pauseTime" : NumberInt(493),
    "contentType" : "Comment",
    "comment" : "vsvdbdbdab adb",
    "__v" : NumberInt(0)
}

这是我到目前为止的查询:

db.getCollection("videocomments").aggregate([ {"$group" : {_id:"$pauseTime", count:{$sum:1}}} ])

它返回:

{ "_id" : 480, "count" : 8 }
{ "_id" : 437, "count" : 5 }
{ "_id" : 51, "count" : 4 }
{ "_id" : 434, "count" : 4 }
{ "_id" : 750, "count" : 9 } 
...

如何继续将“ _id”(即pauseTime)限制为50

1 个答案:

答案 0 :(得分:2)

$lte$gte查询运算符与pauseTime

一起使用
db.getCollection("videocomments").aggregate([
  { "$match": {
    "pauseTime": { "$gte": 50, "$lte": 150 }
  }},
  { "$group": {
    "_id": "$pauseTime",
    "count": { "$sum": 1 }
  }}
])