gpt4 book ai didi

python - “串在一起”基于一组条件的pymongo查询

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:19 24 4
gpt4 key购买 nike

我需要使用一组条件从 mongodb 数据库中检索一些数据(使用 pymongo)。其中一些条件是可选的,而其他条件可能有不止一个可能的值。

我想知道是否有一种方法可以根据这些条件“动态”构建 pymongo 查询(而不是为每个可能的条件组合创建单独的查询)。

例如,假设我有一个查询必须满足以下条件:

  • tag 包含任何this, is, a, tag
  • 用户johnsmith
  • date_published 早于今天

...而另一个查询可能只限于以下内容:

  • 用户johnsmith
  • date_published 晚于今天

总结:不必创建所有可能的条件组合,有没有一种方法可以将条件串在一起以在 pymongo 中形成查询?

最佳答案

PyMongo 查询只是一个 Python 字典,因此您可以使用所有常用技术即时构建一个:

def find_things(tags=None, user=None, published_since=None):
# all queries begin with something common, which may
# be an empty dict, but here's an example
query = {
'is_published': True
}
if tags:
# assume that it is an array of strings
query['tags'] = {'$in': tags}
if user:
# assume that it is a string
query['user'] = user
if published_since:
# assume that it is a datetime.datetime
query['date_published'] = {'$gte': published_since}
# etc...

return db.collection.find(query)

您实现的实际逻辑显然取决于您希望根据什么改变查找调用,这些只是几个示例。如果输入来自不受信任的来源(例如 Web 应用程序表单、URL 参数等),您还需要验证输入。

关于python - “串在一起”基于一组条件的pymongo查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714704/

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