跳过MongoDb后计数

时间:2014-10-10 21:07:16

标签: mongodb

我有一个像这样的集合

{
    "_id" : ObjectId("54368d9125c3dc7c1f43295f"),
    "nome" : "John",
    "eta" : 30,
    "data" : ISODate("2014-10-09T10:30:00.000Z")
}


{
    "_id" : ObjectId("54368d9c25c3dc7c1f432960"),
    "nome" : "Paul",
    "eta" : 31
}

我做了这个查询

db.coll.find({eta:{$gt:30}})

我的结果是一份文件(保罗)

db.coll.find({eta:{$gt:30}}).count() //1

如果我这样做

db.coll.find({eta:{$gt:30}}).skip(1) 

我没有结果,没关系。 但如果我这样做

db.coll.find({eta:{$gt:30}}).skip(1).count() 

我的结果是1

2 个答案:

答案 0 :(得分:2)

来自count()的文档:

  

默认情况下,count()方法忽略cursor.skip()和cursor.limit()的效果。将applySkipLimit设置为true以考虑这些方法的效果。

如果你想要考虑skip()的效果,你可以为count()提供一个名为applySkipLimit的可选参数,如下所示:

db.coll.find({eta:{$gt:30}}).skip(1).count({applySkipLimit:1}); 

或只是

db.coll.find({eta:{$gt:30}}).skip(1).count(true); 

答案 1 :(得分:0)

使用size代替count,因为它包含对光标的任何skiplimit调用的影响:

db.coll.find({eta:{$gt:30}}).skip(1).size()