【问题标题】:Find all document based on length of nested object field根据嵌套对象字段的长度查找所有文档
【发布时间】:2021-11-15 18:26:48
【问题描述】:

我有以下文件:

{
usera:{
    data: {
        order1: "data",
        order2: "data2",
        order3: "data3",
    }
},
userb:{
    data: {
        order1: "data",
        order2: "data2",
    }
},
userc:{
    data: {
        order1: "data",
        order3: "data3",
    }
},
userd:{
    data: {
        order1: "data",
        order2: "data2",
        order3: "data3",
    }
},
usere:{
    data: {
        order1: "data"
    }
}
}

我想查询只有order1而没有其他order2或其他文档可用的文档。

例如只有usere是一个有order1的文档,其他的都不存在。

无论如何,我可以在哪里检查我的 data 字段的长度,如果它是 1 并且 order1 $existstrue

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregation-framework pymongo


    【解决方案1】:

    我认为下面的代码就是你要找的

    db.collection.aggregate([
      {
        "$match": {
          "$expr": {
            "$eq": [
              {
                "$let": {
                  "vars": {
                    "orderElem": {
                      "$objectToArray": "$user.data"
                    },
                    
                  },
                  "in": "$$orderElem.k"
                },
                
              },
              [
                "order1"
              ],
              
            ],
            
          }
        },
        
      }
    ])
    

    MongoPlayground Example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-24
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      相关资源
      最近更新 更多