使用MongoEngine Raw-Query进行投影

时间:2016-08-06 21:18:04

标签: python mongodb mongoengine

有谁知道,如何使用MongoEngine Raq-Query实现以下MongoDB查询?

db.getCollection('subscribers').find({
    '_id': ObjectId("579e60b0c525fd2037e8dd31"),
    'history.content.read_process_msg': { 
        '$exists':true
     },
     'history.content.read_processed': { 
        '$exists':true
     },
     'history.content.read_processed': false
 },
 {'history.$':1})

我读过,raw-query不支持投影,而是应该使用.only()。但问题是,它还返回所有空文档......

有什么建议吗?

编辑:以下是我的模型和示例文档:

class Subscriber(Document):
    service = StringField()
    history = EmbeddedDocumentListField('SubscriberHistory')

    def __str__(self):
        return self.service


class SubscriberHistory(EmbeddedDocument):
    action = StringField()
    content = DictField()

    def __str__(self):
        return self.action

样本:

{
    "_id" : ObjectId("579e60b0c525fd2037e8dd31"),
    "service" : "foo",
    "history" : [ 
        {
            "action" : "outbound",
            "content" : {
                "read_processed" : false,
                "message_data" : {
                    "text" : "w00t?"
                },
                "read_process_msg" : {
                    "$ref" : "bots_messages",
                    "$id" : ObjectId("57a6529dc525fd8066ee25b3")
                }
            },
            "created_at" : ISODate("2016-08-06T21:12:00.986Z")
        }
    ]
}

0 个答案:

没有答案