【发布时间】:2019-02-20 23:25:20
【问题描述】:
我正在尝试使用 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")
【问题讨论】:
-
您需要一个查询过滤器。
mycol.find({"tags.tag.name": "A A"}) -
@styvane 这不起作用。它不仅返回名称,还返回所有结果
-
在此处使用
$elemMatch投影...db.collection.find({ "tags.tag.name": "A A" }, { "tags": { $elemMatch: { "tag.name": "A A" } } }) -
@AnthonyWinzlet 我在
$elemMatch附近得到了一个invalid syntax。我的代码:myQuery = { "tags.tag.name": "A A" }, { "tags": { $elemMatch: { "tag.name": "A A" } } }for x in mycol.find({}, myQuery):pprint(x)
标签: python html django mongodb pymongo