我正在为标准 CRUD 应用程序实现 REST API。在一个示例中,要获取用户列表,客户端可以调用:
GET api.site.com/users
(可选) ?name=x
phone=x
email=x
传递以上可选参数过滤我搜索的用户。
我正尝试在 Python 中实现这个逻辑。我正在考虑链接子查询,如下所示:
给定:
users = User.objects()
然后:
if 'name' in request.args:
users = users.objects(name = request.args['name'])
和:
# List of users is smaller after filtering by name
if 'phone' in request.args:
users = users.objects(phone = request.args['phone'])
和:
# List of users is smaller after filtering by phone
if 'email' in request.args:
users = users.objects(email = request.args['email'])
但是该方法不可用,我无法通过查看 MongoEngine API 引用或用户指南或教程来了解如何执行此操作。
如何在 MongoEngine 中链接子查询?
最佳答案
因为,mongoengine supports keyword arguments to the objects
call ,您可以创建一个字典,将 keys 作为 field_names,将 values 作为 field_values。然后在查询时使用这个字典。例如:
query = {}
if 'name' in request.args:
query['name'] = request.args['name']
if 'phone' in request.args:
query['phone'] = request.args['phone']
if 'email' in request.args:
query['email'] = request.args['email']
user = User.objects(**query)
以上只是一个示例,您可能想要添加安全措施,并且可能有一个默认查询,具体取决于您的应用。
关于python - 在 MongoEngine 中链接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169787/