[英]MongoEngine python library filter query get native mongo syntax
有不同的方法來過濾 mongoengine python 庫提供的 mongo 查詢以連接到 MongoDB。 我們可以使用不同的查詢運算符。
但這是 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
will return pymongo.command_cursor.CommandCursor
object and it not support filtering as supported by QuerySet means, I cant do like model.objects.aggregate(XXXX)(field__in=[1])
.
我可以做model.objects(field__in=[1]).aggregate(XXX)
但這是錯誤的,我們在聚合之前進行過濾,但我想對聚合數據進行過濾。
mongoengine 中有一種方法可以提供此功能。
from mongoengine.queryset.transform import query
如果不提供源Document
,結果將非常通用。
>> query(title="hello")
{'title': 'hello'}
>> query(title__contains="hello")
{'title': 'hello'}
如果您定義一個Document
並將其提供給查詢,則每種字段類型都將知道如何正確處理查詢:
>> from mongoengine import Document, fields
>> class Test(Document):
>> title = fields.StringField()
>> query(Test, title="hello")
{'title': 'hello'}
>> query(Test, title__contains="hello")
{'title': re.compile(r'hello', re.UNICODE)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.