基于引用字段属性的Mongoengine查询

时间:2017-11-28 11:53:21

标签: mongodb mongoengine

我有以下文件

Food(Document)
  title = fields.StringField()
  type = fields.StringField()

Recipe(Document)
  title = fields.StringField()
  food = fields.ReferenceField(Food)

我想获得食谱清单,食物类型为食物。= =" nonveg"

我可以执行以下操作吗?

Recipe.objects.where(food__type="nonveg")

谢谢!

2 个答案:

答案 0 :(得分:0)

“类型”是mongodb中操作员的保留字。因此,您应该使用以下查询:Recipe.objects(food__type__="nonveg")

答案 1 :(得分:-1)

单个查询是不可能的,因为引用字段仅保存实际文档的id。 因此,你需要做两个查询

  1. 获取Foodtype的所有对象。这可以通过代码foods = Food.objects(type='nonveg')
  2. 完成
  3. 现在,使用foods对象列表将Recipe集合过滤为:Recipe.objects(food__in=foods)。此外,请记住,in操作会获取一个列表,因此,即使您使用Step 1 .get()中获取单个实例,也始终将列表传递到过滤器查询中>

    完成以下步骤:

    foods = Food.objects(type="nonveg")
    recipes = Recipe.objects(food__in=foods) 
    
相关问题