2012-07-16 91 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