如何在mongodb查询中检查数组元素是否相同?

问题描述 投票:0回答:1

我有以下收藏:

[
  {
    "_id": 1,
    "favorite": {
      "color": "red",
      "foods": {
        "fruits": "banana",
        "fastfood": [
          "burger",
          "sandwich"
        ]
      }
    }
  },
  {
    "_id": 2,
    "favorite": {
      "color": "green",
      "foods": {
        "noodles": "ramen",
        "fastfood": [
          "fries",
          "burger",
          "corn dog"
        ]
      }
    }
  },
  {
    "_id": 3,
    "favorite": {
      "color": "red",
      "foods": {
        "soup": "cream soup"
      }
    }
  }
]

我必须进行以下查询:

db.collection.find({
  "favorite.foods.fruits": "banana",
  "favorite.foods.fastfood": {
    "$all": [
      "burger"
    ]
  }
})

当前结果:

[
  {
    "_id": 1,
    "favorite": {
      "color": "red",
      "foods": {
        "fastfood": [
          "burger",
          "sandwich"
        ],
        "fruits": "banana"
      }
    }
  }
]

预期结果: 但这不是我预期的结果。我需要匹配快餐数组的完整 favorite.foods.fastfood 对象。如果快餐与我的查询不相同,则查询应返回 null/false/empty。

另外使用 mongoTemplate 的查询结果对我来说也很好。

mongodb nosql mongotemplate
1个回答
0
投票

如果为了保持相同而顺序很重要,则只需删除

$all
运算符即可:

db.collection.find({
  "favorite.foods.fruits": "banana",
  "favorite.foods.fastfood": [
    "burger"
  ]
})

游乐场演示

© www.soinside.com 2019 - 2024. All rights reserved.