python - 通过查询嵌入字段来检索字段的子集

标签 python django mongodb django-nonrel

是否可以使用 Django mongodb nonrel 检索字段的子集? .我对 python 完全陌生,但对 mongo 有很好的了解。

我的要求很直接,我想通过它的嵌入字段查询集合并只返回一些特定的字段

我可以在 mongodb 中通过

db.Contract.find({'owner.name':'Ram'},{'address':1})

我在 django 中试过这个

Contract.objects.filter(owner__name='Ram')

但它会抛出一个错误

raise FieldError("Join on field %r not permitted. Did you misspell %r for the lookup type?" % (name, names[pos + 1])) FieldError: Join on field 'owner' not permitted. Did you misspell 'name' for the lookup type?

我完全被打动了。我相信我有文档中指定的模型。

class SimplePerson(models.Model):
    name = models.CharField(max_length=255)
    user_key = models.CharField(max_length=255)


class Contract(models.Model):
    owner = EmbeddedModelField('SimplePerson')
    title = models.CharField(max_length=120, )

这真的很奇怪。我在文档站点中找不到任何关于如何查询嵌入字段和检索字段子集的引用。

最后我用了raw_query查询嵌入字段

Contract.objects.raw_query({'owner.name':'Ram'})

但仍然无法弄清楚如何检索字段的子集。有人可以帮帮我吗?

最佳答案

子对象过滤器尚不可用,因此您需要下拉至 raw_query(您已经知道了)。要检索字段的子集,请使用 .values('field1', 'field2', ...)

关于python - 通过查询嵌入字段来检索字段的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11506828/

相关文章:

Python:动态地将用户定义的数据插入到二维列表中

python - 客户端排序查询集,Django + TwitterBoostrap

django - 在 Django 中使用 {% url %} 时的 NoReverseMatch

node.js - 在 $group 之前使用 $unwind 进行 Mongoose 聚合

Python如何从我的列表中列出某些数字

python - 在 python 中生成集合组合的内存效率最高的方法是什么?

python - django HTTP 405 方法不允许以 html 形式出现

node.js - 从 Mongoose 中的嵌入文档中检索分页结果

Mongodb 不会做任何事情

python - 如何在每行之前打印带有文件名的文件内容?