【发布时间】:2020-07-03 23:01:22
【问题描述】:
过滤mongoengine python库提供的mongo查询以连接到MongoDB有不同的方法。我们可以使用不同的Query operators。
但这是 MongoEngine 的实现,MongoDB 无法理解,mongoengine 必须将其转换为 MongoDB 原生语法可以理解的语法。
例如:
model.objects(field__in=[1])
是 MongoDB 中的实际查询
db.collection.find({field: {$in: [1]}})
或
models.objects(field__lt=5)
是 MongoDB 中的实际查询
db.collection.find({field: {$lt: 5}})
我正在寻找可以传递field__in=[1] 并返回给我{field: {$in: [1]}} 的方法。
我需要这个来生成聚合$match。 MongoEngine model.objects.aggregate 将返回pymongo.command_cursor.CommandCursor 对象,它不支持QuerySet 支持的过滤方式,我不能像model.objects.aggregate(XXXX)(field__in=[1]) 那样做。
我可以model.objects(field__in=[1]).aggregate(XXX) 但这是错误的,我们在聚合之前进行过滤,但我想对聚合数据进行过滤。
【问题讨论】:
标签: python mongodb mongoengine