检索其中一个引用字段满足条件的文档

2024-05-06 02:55:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试根据子文档的一个字段的条件从子文档中检索id。以下是文档模式

class father(DynamicDocument):
    name = StringField

class child(DynamicDocument):
    name = StringField
    parent = ReferenceField('father')

如果孩子的父亲叫‘阿纳金’,我怎么才能得到孩子的身份证

我正在尝试此查询:

Child.objects.filter(parent__name=Father.objects(name='Anakin').first().id).first().id

但结果是:

mongoengine.errors.InvalidQueryError: Cannot perform join in mongoDB: parent__name

1条回答
网友
1楼 · 发布于 2024-05-06 02:55:34

在1查询中没有简单的方法可以做到这一点,因为MongoDB没有连接

使用MongoEngine执行此操作的推荐方法是使用2个查询:

anakin = Father.objects(name='Anakin').first()
anakin_childs = Child.objects.filter(parent=anakin) #.first() if you are only interested in first match

CachedReferenceField可能也是您感兴趣的,它在父集合中缓存(即复制)一些属性,允许您进行这种“连接”。但是,由于保持缓存属性与原始文档同步的开销,它会降低性能

相关问题 更多 >