Запросить массив в PyMongo - PullRequest
       6

Запросить массив в PyMongo

0 голосов
/ 17 сентября 2018

Я пытаюсь запросить массив с помощью PyMongo, и я получаю все значения вместо одного совпадающего 'A A'

Формат массива:

"tags": [
        {
            "tag": {
                "name": "A A"
                    }
         }
         ]

Python Code:

import pymongo
from pprint import pprint


myclient = pymongo.MongoClient("mongodb://00.00.00.0:27017")
mydb = myclient["dbName"]
mycol = mydb["thePage"]


for x in mycol.find({},{"_id": 0, "tags.tag.name":   "A A"}):
   pprint(x)

Результат:

[{'tag': {'name': 'A A'}}, 
{'tag': {'name': 'B B'}},
{'tag': {'name': 'C C'}}]

Ожидаемый результат:

{'name': 'A A'}

Я получаю нужный мне результат, используя MongoDB:

db.dbName.where("tags.tag.name").eq("A A")

1 Ответ

0 голосов
/ 17 сентября 2018

Вам необходимо сначала деконструировать массив. Попробуйте сделать это:

mycol.aggregate([
    {'$unwind':'$tags'},
    {'$match': {
        'tags.tag.name':'A A',
    }},
    {'$project': {
        'tags.tag.name': 1, '_id': 0
    }},
])
...