1

當我們使用Django MongoDB的引擎來實現ManyToManyField, 我們可以象下面這樣設計的:設計的Django MongoDB的引擎外鍵列表

# Model and its field 
class Group(models.Model): 
    members = ListField(models.ForeignKey(User)) 

# Query 
Group.objects.raw_query({'members': ObjectId(request.user.id)}) 

的一個上面會現場「成員」作爲MongoDB的ID列表存儲在MongoDB的。像"members" : [ ObjectId("4e46434741b6994c70000000") ]

我們還可以存儲MongoDB的ID作爲字符串:

# Model and its field 
class Group(models.Model): 
    members = ListField(models.CharField(max_length=24)) 

# Query 
Group.objects.filter(members=request.user.id) 

的一個以上的將存儲領域的「成員」,如MongoDB的字符串列表。像 "members" : [ "4e46434741b6994c70000000" ]

我的問題是,這些結構哪一個是更有效的mongodb查詢?

回答

2

一把外鍵挑釁。您指向的模型將使用objectid,因爲它是_id,因此通過將關係存儲爲字符串,您需要將列表中的每個項目從字符串轉換爲objectId。