У меня есть образец JSON, как показано ниже.Mongo DB Query on List <Map <String, Map <String, String >>>
{
"subscriber": {
"id": "123",
"custom_field1": "0",
"custom_field2": "0"
},
"subscriptions": [{
"12": {
"subs_id": "111",
"state": "5",
}
}, {
"13": {
"subs_id": "222",
"state": "8",
}, {
"14": {
"subs_id": "111",
"state": "8",
}
}]
}
Я могу запросить на Монго DB, как
db.testTable.find ({ "subscriber.id": "123"});
И я могу получить результаты слишком используя приведенный выше запрос.
Теперь я хочу, чтобы фильтровать данные на подписок массив, которые состоят из «subs_id» = «111».
Я попытался, как ниже
db.testTable.find ({ "subscriptions.subs_id": "111"});
, который не дает мне результатов. Может кто-нибудь подскажет мне, как это сделать.
Примечание: Я понимаю, что его в Список < < Карта String, Map < String, String>>> формат и я запрашивая на стоимость части объекта на карте. Но не в состоянии понять, как получить результаты.
вы должны попробовать фиксации подписки, изменив его в список вложенных документов. что-то вроде этого '{" subs_key ":" 12 ", " subs_id ":" 111 ", " state ":" 5 ", }' и вы можете найти подписку, используя 'db.testTable.find ({ «подписчики»: «123», «subscriptions.subs_id»: «111»}, {«subscriptions. $»: 1); ' – Veeram
согласен с тем, что сказал сагар. если у mongo будет поиск имени поля wild card, тогда будет другая история, но прямо сейчас ваш документ, вероятно, нуждается в настройке. зачем маркировать ваши документы цифрами? есть ли причина? –
Спасибо за ввод. Но я не могу изменить формат входных данных, поскольку он исходит от клиента. Просто нужно отфильтровать данные в указанном формате .. Любые предложения без настройки данных оцениваются ..! – Manindar