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
可能更有意义。使代码更直观。