Mongodb 来自mongo的限制为1的同一查询的计数(Node.js)
我的问题是:Mongodb 来自mongo的限制为1的同一查询的计数(Node.js),mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我的问题是: event.find({ id:{$get:id}, num:"5" }).limit(1) 但我也会执行相同的查询并获得计数结果(来自相同的查询) 因此,1是最后一个限制为1的结果,第二个是没有限制的计数 在MongoDB中如何实现这一点 我考虑的一个选项是执行相同的查询,但不受限制,例如,获取2000个结果并在node.js代码中计数 我的节点代码: result = await this.collection.find({ 'val':obj.va
event.find({
id:{$get:id},
num:"5"
}).limit(1)
但我也会执行相同的查询并获得计数结果(来自相同的查询)
因此,1是最后一个限制为1的结果,第二个是没有限制的计数
在MongoDB中如何实现这一点
我考虑的一个选项是执行相同的查询,但不受限制,例如,获取2000个结果并在node.js代码中计数
我的节点代码:
result = await this.collection.find({
'val':obj.val,
'id' : {$lt: id}
}).sort({id:-1}).limit(1).project({_id:0})
let count = await result.count()
但是count总是返回1(因为count应该忽略id选项)
可能吗
例如:
请求为name=yy,id=3
1- { id :3 , name:yy },
2 - {id : 2 , name:yy}
另一个例子
结果将是:第2行(3大于2)。计数=2时
1- { id :3 , name:yy },
2 - {id : 2 , name:xx}
结果将是:[],计数为1。(没有id的相同查询)您可以使用
您想通过一次查询
count
和limit
吗?是的,或者从node.js代码。我如何防止计数计算的id?您能再解释一下吗。我没听懂你的话,它在工作,但伯爵把整张桌子都还给了你。我需要计数执行相同的查询,而不匹配idresult = await this.collection.aggregate([
{ "$facet": {
"count": [
{ "$match": { "id": { "$lte": id }}},
{ "$count": "count" }
],
"data": [
{ "$match": { "val": obj.val, "id" : id }},
{ "$sort": { "id": -1 }},
{ "$limit": 1 },
{ "$project": { "_id": 0 }}
]
}}
])
result = result[0].data
const count = result[0].count