代码之家  ›  专栏  ›  技术社区  ›  Tanvi Jaywant

检查数组中是否存在字段[重复]

  •  2
  • Tanvi Jaywant  · 技术社区  · 8 年前

    考虑一个名为“方案”的集合,并使用以下文档。如何查询预付费数组中至少包含元素且包含“a”的所有方案?这里第一个集合满足条件,因为dataArray[0]具有“a”。第二个集合没有。因此,我希望通过查询只查找这样的集合—整个dataArray的一个元素中包含“a”。

    {
        "plan":{
            "dataArray" : [
                     {
                         "a" : "x",
                         "b" : "y",
                         "c" : "z"
                     },
                     {
                         "b" : "x",
                         "c" : "z"
                     }
                ],
            }
    }
    {
        "plan":{
            "dataArray" : [
                {
                    "b" : "y",
                    "c" : "z"
                },
                {
                    "b" : "x",
                    "c" : "z"
                }
            ],
        }
    }
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   Ashh    8 年前

    你可以用 $exists 运算符来检查数组中是否存在该属性

    db.collection.find({
      "plan.dataArray.a": {
        $exists: true
      }
    })
    

    输出

    [
      {
        "plan": {
          "dataArray": [
            {
              "a": "x",
              "b": "y",
              "c": "z"
            },
            {
              "b": "x",
              "c": "z"
            }
          ]
        }
      }
    ]
    
    推荐文章