在PyMongo中查询数组

时间:2018-09-17 04:50:47

标签: python html django mongodb pymongo

我正在尝试使用PyMongo查询一个数组,我正在获取所有值,而不是仅一个匹配'A A'

数组格式:

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

Python代码:

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 :(得分:0)

您需要先解构数组。 尝试这样做:

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