在指定logging之前计算匹配条件的logging

我有一个名为“队列”的集合中的用户列表。 将用户添加到集合中时,对象如下所示:

{ "_id": ObjectID("5543cb95a02855d404823ec3"), "id": "oBPLtOY2W6ChusMLAAAA", "added": "2015-05-01T14:53:09-04:00", "expiration": "", "word": "", "composed": false, "active": false } 

现在,我想要做的是统计集合中指定用户之前的logging数。 但是,我只想计算遵循一定标准的logging。

我可以计算符合如下标准的logging:

 db.collection("queue").count({ expiration: "", word: "", composed: false, active: false }, function(err, count) { // Count = number of users that match the criteria }); 

但是,我似乎无法弄清楚的是如何计算那些只在集合中指定用户之前出现的logging。 唯一可以这样做的方式是循环访问与条件匹配的logging列表,在每个循环中将计数器加1,并在达到指定用户标识时停止循环。

有一个更好的方法吗?

假设你有引用用户的_id值(让我们把它称为reference_id ),下面应该工作:

 db.collection("queue").count({ expiration: "", word: "", composed: false, active: false, _id: { "$lt": reference_id } }); 

这会根据_id值search较早的用户。 如果您正在search具有较早added用户,请将查询更改为以下内容:

 db.collection("queue").count({ expiration: "", word: "", composed: false, active: false, added: { "$lt": reference_date } });