gpt4 book ai didi

python - 当 MongoDB 客户端返回正确结果时,PyMongo 返回空结果集

转载 作者:可可西里 更新时间:2023-11-01 10:43:16 24 4
gpt4 key购买 nike

我有一个简单的 MongoDB 集合,我在我的 Python 脚本中使用 PyMongo 访问它。

我正在使用字典在 Python 中过滤查询:

{ "$and" : [
{ "bettinginterests" : { "$elemMatch" : { "runner.name" : "Jailhouse King" } } },
{ "bettinginterests" : { "$elemMatch" : { "runner.name" : "Tyrone Haji" } } }
]
}

这会返回正确的结果。但是,我想将过滤器扩展为:

{ "$and" : [
{ "bettinginterests" : { "$elemMatch" : { "runner.name" : "Jailhouse King" } } },
{ "bettinginterests" : { "$elemMatch" : { "runner.name" : "Tyrone Haji" } } },
{ "summary.dist" : "1" }
]
}

这将返回一个空结果集。现在,当我在我的 MongoDB 客户端中执行相同的查询时,使用:

db.race_results.find({ "$and" : [
{ "bettinginterests" : { "$elemMatch" : { "runner.name" : "Jailhouse King" } } },
{ "bettinginterests" : { "$elemMatch" : { "runner.name" : "Tyrone Haji" } } },
{ "summary.dist": "1" }
]
})

结果按预期正确返回。

我没有看到作为查询过滤器传递的 Python 字典与在我的 MongoDBjs 代码之间有任何区别> 客户。

有没有人看到可能存在差异的地方?我在这里不知所措。

更新:

这是我的数据库中的示例记录: https://gist.github.com/brspurri/8cefcd20a7f995145a81

更新 2:执行查询的 Python 代码:

runner = "Jailhouse King"
opponent = "Tyrone Haji"
query_filter = {"$and": [
{"bettinginterests": {"$elemMatch": {"runner.name": runner}}},
{"bettinginterests": {"$elemMatch": {"runner.name": opponent}}},
{ "summary.dist" : "1" }
]
}

try:
collection = db.databases['race_results']
entities = None
if not query_filter:
entities = collection.find().sort([("date", -1)])
else:
entities = collection.find(query_filter).sort([("date", -1)])

except BaseException, e:
print('An error occured in query: %s\n' % e)

最佳答案

这一行可能是罪魁祸首。

collection = db.databases['race_results']

如果 db 是您的数据库,那么您做错了。应该是

collection = db['race_results'] 

关于python - 当 MongoDB 客户端返回正确结果时,PyMongo 返回空结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29152314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com