Cra*_*ezy 4 python mongodb mongoengine
我有两个文件
class Book(Document):
title = StringField()
publication = StringField()
no_of_pages = IntField()
desc = StringField()
reviews = ListField(ReferenceField(Review))
...
class Author(Document):
name = StringField()
books = ListField(ReferenceField(Book))
desc = StringField()
...
Run Code Online (Sandbox Code Playgroud)
我想写一个查询,给出一个作者的名字,找到他所有书的瓷砖。
正如您所看到的,两个文档都有很多列,我不想获取所有列。因此我的必填字段是
`req_fields = ['name', 'books']`
Run Code Online (Sandbox Code Playgroud)
我查询如下
author = Author.objects.filter(name='xyz').only(*req_fields)
Run Code Online (Sandbox Code Playgroud)
如果我打印author对象,我会得到:
{
_id=ObjectId('50fcf9682c345a0427000019'),
_cls='Author',
name='xyz',
books=[DBRef('Book', ObjectId('50fcd9682c441e0427000019')),
DBRef('Book', ObjectId('50fcd9682c361e0427000020'))]
}
Run Code Online (Sandbox Code Playgroud)
我希望查询返回标题字符串列表而不是书籍对象列表。我该如何修改?以便结果对象如下所示
{
_id=ObjectId('50fcf9682c345a0427000019'),
_cls='Author',
name='xyz',
books=['Title One', 'Title Two']
}
Run Code Online (Sandbox Code Playgroud)
如果您需要取消引用书籍,请致电select_related 例如:
author = Author.objects.filter(name='xyz').only(*req_fields).select_related()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8581 次 |
| 最近记录: |