首页 > 解决方案 > 在嵌入文档数组中查找特定字段

问题描述

我试图在我的 MongoDB 文档中找到数组的特定元素,但是我的所有尝试查询都返回了所有数组。我怎样才能得到正确的对象?

我收藏的文档如下所示:

{
  "Achievements": [
    {
      "AchievementID": 1,
      "AchievementEventID": 0
    },
    {
      "AchievementID": 2,
      "AchievementEventID": 1
    }
  ],
  "Buildings": [
    {
      "BuildingID": 1,
      "BuildingType": "type1"
    },
    {
      "BuildingID": 2,
      "BuildingType": "type1"
    },
  ]
}

我试图只获取Achievements数组的一个元素:

db.data.find({'Achievements.AchievementEventID': 0})

我希望只得到AchievementEventID等于 0 的元素:

{
  "AchievementID": 1,
  "AchievementEventID": 0
}

但我得到了整个Achievements数组。我怎么能只得到特定的元素?

我刚刚尝试了查询,但所有这些工作都不正确

标签: arraysmongodbmongodb-query

解决方案


您可以为此使用 $elemMatch

db.data.find(
   { 'Achievements.AchievementEventID': 0},{Buildings:0, Achievements: {$elemMatch: {AchievementEventID: 0}}}
)

如果上述解决方案不适合您,请尝试以下解决方案:

db.data.find({"Achievements.AchievementEventID": 0}, {Buildings: 0, 'Achievements.$': 1});

推荐阅读