Node.js 在指定记录之前对符合条件的记录进行计数

Node.js 在指定记录之前对符合条件的记录进行计数,node.js,mongodb,count,Node.js,Mongodb,Count,我有一个名为“队列”的集合中的用户列表。将用户添加到集合时,对象如下所示: { "_id": ObjectID("5543cb95a02855d404823ec3"), "id": "oBPLtOY2W6ChusMLAAAA", "added": "2015-05-01T14:53:09-04:00", "expiration": "", "word": "", "composed": false, "active": false } db.collection("

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

{
  "_id": ObjectID("5543cb95a02855d404823ec3"),
  "id": "oBPLtOY2W6ChusMLAAAA",
  "added": "2015-05-01T14:53:09-04:00",
  "expiration": "",
  "word": "",
  "composed": false,
  "active": false
}
db.collection("queue").count({
    expiration: "", 
    word: "",
    composed: false,
    active: false
}, function(err, count) {
    // Count = number of users that match the criteria
});
现在,我要做的是统计集合中指定用户之前的记录数。但是,我只想计算遵循特定标准的记录

我可以计算符合以下条件的记录:

{
  "_id": ObjectID("5543cb95a02855d404823ec3"),
  "id": "oBPLtOY2W6ChusMLAAAA",
  "added": "2015-05-01T14:53:09-04:00",
  "expiration": "",
  "word": "",
  "composed": false,
  "active": false
}
db.collection("queue").count({
    expiration: "", 
    word: "",
    composed: false,
    active: false
}, function(err, count) {
    // Count = number of users that match the criteria
});
然而,我似乎不知道如何计算那些只出现在集合中指定用户之前的记录。我能想到的唯一方法是循环通过符合条件的记录列表,在每个循环的计数器上添加1,并在达到指定用户id时停止循环


有更好的方法吗?

假设您拥有参考用户的
\u id
值(我们称之为
reference\u id
),以下方法应该有效:

db.collection("queue").count({
  expiration: "", 
  word: "",
  composed: false,
  active: false,
  _id: { "$lt": reference_id }
});
这将根据
\u id
值搜索早期用户。如果您正在搜索添加了早期
值的用户,请将查询更改为以下内容:

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

“在指定用户之前”是什么意思?@w0lf:在指定用户的
“added”
时间戳之前添加的记录。这正是我需要的。非常感谢。我想补充一点,使用
added
字段而不是
\u id
可能更有意义。使代码更直观。