Python 在PyMongo中查询数组
我试图使用PyMongo查询一个数组,我得到的是所有的值,而不仅仅是一个匹配的'A' 数组格式:Python 在PyMongo中查询数组,python,html,django,mongodb,pymongo,Python,Html,Django,Mongodb,Pymongo,我试图使用PyMongo查询一个数组,我得到的是所有的值,而不仅仅是一个匹配的'A' 数组格式: "tags": [ { "tag": { "name": "A A" } } ] Python代码: import pymongo from pprint import pprint myclient = pymongo.MongoClient("
"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.aggregate([
{'$unwind':'$tags'},
{'$match': {
'tags.tag.name':'A A',
}},
{'$project': {
'tags.tag.name': 1, '_id': 0
}},
])
您需要一个查询过滤器<代码>mycl.find({“tags.tag.name”:“A”})@styvane这不起作用。它不仅返回名称,还返回其他变量的所有结果请参见此处的投影
db.collection.find({“tags.tag.name”:“A A”},{“tags”:{$elemMatch:{“tag.name”:“A”}}})
@AnthonyWinzlet我在$elemMatch
附近得到一个无效语法。我的代码:myQuery={“tags.tag.name”:“A A”},{“tags”:{$elemMatch:{“tag.name”:“A”}}}
对于mycl.find({},myQuery)中的x:
pprint(x)
你也这么做了吗?这在我的代码中是什么?对不起,我对Python和MongoDb@newbierp用这个替换你的mycl.find
行。我收到一条self.\u error\u message(选择器))pymongo.errors.ServerSelectionTimeoutError:00.00.0:27017:timed out
error你的mongo服务有问题。你是从终端开始mongo服务的吗?对不起,那是我的错。我修好了。但是我现在有一个新错误:pymongo.errors.OperationFailure:path选项到$unwind stage应该以“$”为前缀:tags