Запросить и спроецировать значения словаря, которые являются элементами массива в MongoDb - PullRequest
0 голосов
/ 03 октября 2018

Я новичок в 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"
}

Я хочу *Значение 1006 *, когда я указываю, что categoryName это «Преступление».Итак, в этом случае мне нужно напечатать 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.Пожалуйста, любая помощь в этом отношении будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 октября 2018

Ты почти у цели.Вам просто не хватает позиционного $ оператора в проекции:

db.RiskScore.find({"country":"Setif","category.categoryName":"Crime"},{"category.$.categoryRating":1})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...