Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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
Javascript 比较mongo中相同文档的2个值_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 比较mongo中相同文档的2个值

Javascript 比较mongo中相同文档的2个值,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我想比较同一文档中的两个值id 比如说 { "_id" : ObjectId("5f180441ad1cd40008dc6a5a"), "fcount" : 5, "key" : "27b6e581-796c-4f3a-882b-0e0c2a0a8a64", "student_id" : "5f0ffbcdd67d70c1a3b143a

我想比较同一文档中的两个值
id

比如说

{
    "_id" : ObjectId("5f180441ad1cd40008dc6a5a"),
    "fcount" : 5,
    "key" : "27b6e581-796c-4f3a-882b-0e0c2a0a8a64",
    "student_id" : "5f0ffbcdd67d70c1a3b143aa",
    "__v" : 0,
    "dcount" : 5
}
我有这个文档,现在如果我想检查
fcount
dcount
是否相同,那么返回
true
。或
false
如何使用mongoose查询执行此操作

更新:

const result = await execute_reports_model.find({ _id: _id}).lean().cursor({batchSize: 10}).eachAsync(async ({fcount, dcount}) => {
                if (fcount === dcount) {
                    // true Logic
                } else  {
                   // false logic
                }
             }, { parallel: 10})    

所以这里我将在find中传递ID。然后比较我从该ID中找到的值。值是
fcount
dcount

此代码将帮助您解决问题。它将允许您找到必要的文档,然后处理所有
true
false
案例

{batchSize:10}
{parallel:10}
将帮助您并行完成任务。您可以轻松地修改它们

不要忘记添加
回调
,或者根据需要以某种方式处理所有情况

await collection_name.find({ your_query: here}).lean().cursor({batchSize: 10}).eachAsync(async ({fcount, dcount}) => {
   if (fcount === dcount) {
       //true case
   } else  {
       //false case
   }
}, { parallel: 10})
使用Mongoose,您可以比较文档的两个字段并返回一个
布尔值

const result = await model.aggregate([
    { $match: { _id: id } },
    { $project: { _id: 0, isMatch: { $eq: [ "$fcount", "$dcount" ] } } }
])

result
value:
{“isMatch”:true}

可以澄清问题,您想检查集合中的每个文档,或者通过
find
query只检查一个(确定的)文档?一次只检查一个,然后您可能想检查我的答案是的,那么问题是什么?您已经有了两个不同的答案,一个是通过
.find
,另一个是通过
聚合
。正如您所描述的,这两种方法都能解决您的问题,那么您选择哪一种呢?如果两者都好,那么别忘了给他们投票。我已经发布了一个答案。我假设给定id的文档存在(查询比较两个字段)。问题:如果提供的
id
不存在,那么结果应该是什么
false
或者根本没有结果?这里当你说你的查询时,你的意思是什么?我想按Id搜索,然后比较上面问题中提到的两个值。我的意思是,你应该在那里放置搜索条件
query
,如果你想按
Id
查找,那么它应该是
你的集合名。find({u Id:value})
更新了问题/