Mongoengine,仅重新获得一些MapField

And*_*son 2 python django mongodb pymongo mongoengine

例如..在Mongodb ..

> db.test.findOne({}, {'mapField.FREE':1})
{
    "_id" : ObjectId("4fb7b248c450190a2000006a"),
    "mapField" : {
            "BOXFLUX" : {
                    "a" : "f",
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

'mapField'字段由Mongoengine的MapField组成.'mapField'字段有一个键和数据的日志..但我只检索'BOXFLUX'..

这个查询在MongoEngine中不起作用....例如..

BoxfluxDocument.objects( ~~ querying ~~ ).only('mapField.BOXFLUX')
Run Code Online (Sandbox Code Playgroud)

你可以看到.. 只有('mapField.BOXFLUX')只有('mapField__BOXFLUX')不起作用.它检索所有'mapField'数据,包括'BOXFLUX'一个..

如何只检索MapField的字段???

Ros*_*oss 5

我看到有一张票:https://github.com/hmarr/mongoengine/issues/508

为我工作的是一个示例测试案例:

def test_only_with_mapfields(self):

    class BlogPost(Document):
        content = StringField()
        author = MapField(field=StringField())

    BlogPost.drop_collection()

    post = BlogPost(content='Had a good coffee today...', 
                    author={'name': "Ross", "age": "20"}).save()

    obj = BlogPost.objects.only('author__name',).get()

    self.assertEquals(obj.author['name'], "Ross")
    self.assertEquals(obj.author.get("age", None), None)
Run Code Online (Sandbox Code Playgroud)