根据嵌套对象字段的长度查找所有文档

Find all document based on length of nested object field

我有以下文件:

{
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

我想下面的代码就是你要找的

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

MongoPlayground Example