python - 在引用字段列表上使用 only() 进行 Mongoengine 查询

标签 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()
    ...

我想编写一个查询,根据作者的姓名查找他书中的所有图 block 。

如您所见,两个文档都有大量的列,我不想得到 所有列。因此我的必填字段是

`req_fields = ['name', 'books']`

我查询如下

author = Author.objects.filter(name='xyz').only(*req_fields)

如果我打印 author 对象,我得到:

{
_id=ObjectId('50fcf9682c345a0427000019'),
_cls='Author',
name='xyz',
books=[DBRef('Book', ObjectId('50fcd9682c441e0427000019')), 
DBRef('Book', ObjectId('50fcd9682c361e0427000020'))]
}

我希望查询返回标题字符串列表而不是书籍对象列表。我该如何修改?这样结果对象就像下面这样

{
_id=ObjectId('50fcf9682c345a0427000019'),
_cls='Author',
name='xyz',
books=['Title One', 'Title Two']
}

最佳答案

如果您需要取消引用书籍,请调用select_related 例如:

author = Author.objects.filter(name='xyz').only(*req_fields).select_related()

关于python - 在引用字段列表上使用 only() 进行 Mongoengine 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601321/

相关文章:

python - 使用带有 mongo-hadoop 和 python 的 hadoop 流式处理的空输出集合

node.js - 如何为 Mongoose 添加父子类别(嵌套)Node.JS

mongodb - 如何在mongoengine中做 "group by"

python - 两次单独的按键来保存和退出 while 循环

python - 将 pandas groupby 操作的输出保存为 CSV

python - 如何正确使用 pandas Series.map() 和映射字典?

python - 当 python 导入时,它是否在 'import' 语句中导入名称?

node.js - NodeJS MongoDB 驱动程序 : Specify type of field at insert

mongodb - 如何使用 Mongoengine 从 MongoDB 中删除文档?

python - 如何在 mongoengine 中迭代数据库中的集合?