Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 来自mongo的限制为1的同一查询的计数(Node.js)_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

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