【问题标题】:MongoDB - How to get the documents based on two column valuesMongoDB - 如何根据两列值获取文档
【发布时间】:2022-02-01 15:12:59
【问题描述】:

我的带有示例数据的 MongoDB 集合附在下面的屏幕截图中

我想通过传递等级值来获取行,结果记录应该返回如下

  • 案例 1:当等级 = 12 时,应返回第 1、3、6 和 7 行,即给出 12年级应该与gradeFrom和gradeTo进行比较

  • 案例 2:当等级 = 1 时,应该返回第 5 行

作为对以上情况的总结,给定的等级应该大于或等于gradeFrom并且小于或等于gradeTo。

下面给出了我使用的猫鼬查询,但返回的数据在我的代码中是空的

let andCondition = []; 
let grade = 12;
andCondition.push({ gradeFrom: {$gte: grade}});
andCondition.push({ gradeTo: {$lte: grade}});
let data = await Course.find({$and :andCondition});

console.log(andCondition) gives the below object

[ 
    { gradeFrom: { '$gte': 12 } }, 
    { gradeTo: { '$lte': 12 } } 
]

请帮我完成这项工作。

【问题讨论】:

  • 应该是gradeFrom: {$lte: grade}gradeTo: {$gte: grade}。颠倒的逻辑。数学逻辑:gradeFrom
  • @YongShun 是的,我知道了,谢谢。,请添加为接受的答案

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

你已经颠倒了范围逻辑。

在数学中,应该是:

gradeFrom <= grade <= gradeTo

在 MongoDB 查询中:

{ gradeFrom: { $lte: grade } }
{ gradeTo: { $gte: grade } }

【讨论】:

    猜你喜欢
    • 2018-07-14
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2017-03-09
    相关资源
    最近更新 更多