в запросе Pymongo, где я хочу получить конкретные данные из вложенного документа - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть документ ниже, хранящийся в mongodb

{
    "_id" : ObjectId("5c13b65ef169123748e18ecb"),
    "Countries" : [ 
        {
            "States" : [ 
                {
                    "Cities" : [ 
                        "Eshkashem", 
                        "Fayzabad", 
                        "Jurm", 
                        "Khandud", 
                        "Qal'eh-ye Panjeh"
                    ],
                    "StateName" : "Badakhshan"
                }, 
                {
                    "Cities" : [ 
                        "Bala Morghab", 
                        "Qal'eh-ye Naw"
                    ],
                    "StateName" : "Badgis"
                }
            ],
            "CountryName" : "Afghanistan"
        }, 
        {
            "States" : [ 
                {
                    "Cities" : [ 
                        "Berat", 
                        "Polican", 
                        "Ure Vajgurore"
                    ],
                    "StateName" : "Berat"
                }, 
                {
                    "Cities" : [ 
                        "Bulqize"
                    ],
                    "StateName" : "Bulqize"
                }
            ],
            "CountryName" : "Albania"
        }
    ]
}

, что я хочу, я хочу получить данные, название страны которого является Afganisthan

Я попытался выполнить запрос

loc_country = loc.find({"Countries.CountryName":"Afghanistan"}) 

но он выдает всю запись вместо афганистхана

Пожалуйста, помогите мне, я застрял.

Заранее спасибо!

1 Ответ

0 голосов
/ 14 декабря 2018

Вы можете использовать позиционный оператор :

loc_country = loc.find(
   { "Countries.CountryName":"Afghanistan"},
   { 'Countries.$': 1 }
)

Если возможно, вам следует рассмотреть модель данных с одной страной на документ для упрощения поиска.(Если это имеет смысл)

...