在 mongodb 中查找特定内容

Posted

技术标签:

【中文标题】在 mongodb 中查找特定内容【英文标题】:Find with specific content in mongodb 【发布时间】:2020-08-17 19:28:32 【问题描述】:

您好,我怎样才能通过某些特定查询找到数据。例如,我在下面有一个集合:


    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "05"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "06"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "07"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "08"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "04"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2021",
    "month" : "05"

所以我想获取数据“centId”必须是“261FB12F”,“servId”必须是“CBBFEC62”,“year”不是“2020”,“month”也不是“06”。我如何发送查询。我想要如下结果:


    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "06"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "07"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "08"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2020",
    "month" : "04"
,

    "centId" : "261FB12F",
    "servId" : "CBBFEC62",
    "year" : "2021",
    "month" : "05"

【问题讨论】:

你说“年”不是“2020”,所有的例子都是2020,但最后一个是2020。第一个是月份=“06” - 请澄清你的选择标准。跨度> 是的,“年”不等于“2020”,“月”不等于“06”。并且“centId”必须等于“261FB12F”并且“centerId”必须等于“CBBFEC62” 当你说不相等时,你的结果怎么会有“2020”或“06”? 所以我想获取数据“centId”必须是“261FB12F”,“servId”必须是“CBBFEC62”,“year”不是“2020”,“month”不是“06”也是。 【参考方案1】:

听起来您只想使用 Mongo 的 logical 表达式。特别是您的情况下的 $and 运算符:

db.collection.find(
    $and: [
        centerId: "A",
        ServiceId: "B",
        country: $ne: "Georgia",
        city: $ne: "Batumi"
    ]
)

【讨论】:

感谢我朋友的帮助,但您的代码在我的特殊示例中不起作用。虽然这个例子像我的特例 那么您有不同的问题,查询错误的集合或数据库,如果您执行一个空的find 查询,您会看到结果吗? 我的朋友我用我的实际代码替换了示例代码,请尝试实际收藏【参考方案2】:
db.getCollection("mycollection").find(
    "centerId": "A",
    "ServiceId": "B",
    "country": 
        $ne: 'Georgia'
    ,
    city: 
        $ne: 'Batumi'
    
)

【讨论】:

@Vagif 请将查询中的集合名称替换为您的实际集合名称,然后执行【参考方案3】:
db.collection.aggregate(
  $match: 
    $expr: 
      $and: [
        
          $eq: [
            "$centId",
            "261FB12F"
          ]
        ,
        
          $eq: [
            "$servId",
            "CBBFEC62"
          ]
        ,
        
          $ne: [
            "$year",
            "2020"
          ]
        ,
        
          $ne: [
            "$month",
            "06"
          ]
        
      ]
    
  
)

MongoPlayGroundLink

【讨论】:

以上是关于在 mongodb 中查找特定内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在MongoDB中从某些类别中查找特定文档

通过 Mongoose、Node.js、MongodB 中的特定属性查找嵌入式文档

如何检查 MongoDB 数据库中的所有集合以查找特定关键字?

从 Vava 到 MongoDB 查询:查找特定日期范围内的事件

如何在特定字段 MongoDB 上查找 Distinct No of Document 并根据条件打印文档数?

如何在任意深度查找 MongoDB 字段名称