【问题标题】:How to query with multiple expressions in mongodb?如何在mongodb中使用多个表达式进行查询?
【发布时间】:2021-07-18 23:50:22
【问题描述】:

我有一个nameagecountry 的用户列表。

现在我想用以下查询来查询这个用户列表。

  1. 仅按名称搜索。
  2. 同时按名称和国家/地区搜索

我之前尝试过的东西,但没有得到想要的结果。

users.find({
            $and: [
             { name: name },
             { country: country },
            ],
           })

当我仅使用name 进行搜索时,我没有得到任何结果,因为country 在我的查询中为空。

当我在查询中同时传递namecountry 时,它工作正常。

如果在表达式中传递,我需要了解如何使用空值进行查询。

【问题讨论】:

  • 为什么不用$or 而不是$and
  • 我确实使用了 $or,在这种情况下,它会查找带有名称(或)的所有记录以及国家/地区。我想搜索名称(和)国家

标签: javascript mongodb mongoose


【解决方案1】:

你可以声明一个变量并放置条件,

let match = {};
if (name) match.name = name;
if (country) match.country = country;

users.find(match);

【讨论】:

    【解决方案2】:

    根据你掌握的信息使用if语句查询

    if(name && country){
        users.find({
                $and: [
                 { name: name },
                 { country: country }
                ]
               })
    } else if (name){
        users.find({name: name})
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      相关资源
      最近更新 更多