【问题标题】:To query and project dictionary values that are array elements in MongoDb在 MongoDb 中查询和投影作为数组元素的字典值
【发布时间】:2018-10-03 12:43:01
【问题描述】:

我是 MongoDB 新手,在找到另一个数组元素时需要帮助投影一个数组元素。

以下是我的文档示例-

{
  "_id": ObjectId("5bab53afcfbc7829bc6356a0"), 
  "category": [
    {
      "categoryRating": 3,
      "categoryName": "Crime",
      "categoryNameNew": "Crime"
    },
    {
      "categoryRating": 4,
      "categoryName": "Security Services",
      "categoryNameNew": "Other"
    },
    {
      "categoryRating": 4,
      "categoryName": "Civil Unrest",
      "categoryNameNew": "Societal"
    },
    {
      "categoryRating": 4,
      "categoryName": "Terrorism",
      "categoryNameNew": "Terrorism"
    },
    {
      "categoryRating": 3,
      "categoryName": "Kidnapping",
      "categoryNameNew": "Terrorism"
    },
    {
      "categoryRating": 4,
      "categoryName": "Geopolitical",
      "categoryNameNew": "Geopolitical"
    }
  ], 
  "country": "Setif", 
  "apiSource": "iJET", 
  "overallScore": 4, 
  "newDate": "2017-12-28T19:52:58Z"
}

当我指定categoryName 是“犯罪”时,我想要categoryRating 值。因此,在这种情况下,我需要将categoryrating 打印为 3。

到目前为止,我已经尝试了以下查询-

 db.RiskScore.find({"country":"Setif","category.categoryName":"Crime"},{"category.categoryRating":1})

以下是我的查询结果-

{
  "_id": ObjectId("5bab53afcfbc7829bc6356a0"),
  "category": [
    { "categoryRating": 3 },
    { "categoryRating": 4 },
    { "categoryRating": 4 },
    { "categoryRating": 4 },
    { "categoryRating": 3 },
    { "categoryRating": 4 }
  ]
}

它返回所有 categoryRatings,而不仅仅是 categoryName 为 Crime 的那个。请,对此的任何帮助将不胜感激。

【问题讨论】:

标签: mongodb mongodb-query projection


【解决方案1】:

你快到了。您只是缺少投影中的positional $ operator

db.RiskScore.find({"country":"Setif","category.categoryName":"Crime"},{"category.$.categoryRating":1})

【讨论】:

  • 谢谢.. 这会返回 { "_id" : ObjectId("5bab53afcfbc7829bc6356a0"), "category" : [ { "categoryRating" : 3, "categoryName" : "Crime", "categoryNameNew" : "犯罪" } ] } 并解决了问题。
  • 还有,有没有办法只获取categoryRating字段?
  • 是的,通过聚合框架。如果您的文档很小,我建议在客户端执行此操作。否则,请使用您希望输出的确切定义更新您的问题,我会为您排序。
猜你喜欢
  • 2018-02-20
  • 2023-03-04
  • 1970-01-01
  • 2022-07-24
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 2020-08-31
相关资源
最近更新 更多