放松后,匹配前的Mongo db跳过限制工作

时间:2016-07-07 18:40:50

标签: mongodb mongodb-query aggregation-framework

这是我的疑问:

db.getCollection('grades').
aggregate([{ "$match" : { "class_id" : 28, "student_id" : 0 } }, 
{ "$unwind" : "$scores" }, 
{ "$match" : { "scores.type" : "homework" } }, 
{ "$skip" : 3 }, { "$limit" : 3 }, 
{ "$group" : { "_id" : { "id" : "$_id" }, "scores" : { "$push" : "$scores" } } }, 
{ "$project" : { "_id" : "$_id.id", "scores" : 1 } }])

scores - 是一个嵌套的对象数组。 Score object - {type: "someType", score: someScore}。此查询返回一个文档。

问题:scores数组有6个对象,其中4个类型为homework

  

结果,我收到的内容:http://prntscr.com/bq217r

     

原始文件:http://prntscr.com/bq23bv

为什么skip-limitmatch运营商之前执行了?我该如何解决?

1 个答案:

答案 0 :(得分:1)

根据附带的截图,一切看起来都不错。

我们有4个元素1 2 3 4,然后我们跳过3,所以我们最后得到4 ...而53是值: - )

btw $match

后,您的跳过/限制为