2012-07-16 80 views
4

是否可以使用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'}) 

但还是没能弄清楚如何检索字段的子集。有人可以帮我吗?

回答

3

子对象过滤器是不可能的,所以你需要下降到raw_query(你已经想通了)。要检索字段子集,请使用.values('field1', 'field2', ...)

+0

谢谢@jonahs,它的工作.. – RameshVel 2012-07-17 06:38:45