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

时间:2015-05-01 19:04:43

标签: node.js mongodb count

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

{
  "_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时停止循环。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

假设您拥有参考用户的_id值(我们称之为reference_id),以下内容应该有效:

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

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

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