我有一个名为“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时停止循环。
有更好的方法吗?
答案 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 }
});