当我们使用Django MongoDB Engine实现ManyToManyField时, 我们可以设计如下:
# Model and its field
class Group(models.Model):
members = ListField(models.ForeignKey(User))
# Query
Group.objects.raw_query({'members': ObjectId(request.user.id)})
上面的一个会将字段“members”存储为mongodb中的Mongodb ID列表。与"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)
上面的那个将把字段“members”存储为mongodb中的字符串列表。喜欢
"members" : [ "4e46434741b6994c70000000" ]
我的问题是,这些结构中哪一种对于mongodb查询更有效?
答案 0 :(得分:2)
外键蔑视。您指向的模型将使用objectid作为_id,因此通过将关系存储为字符串,您需要为列表中的每个项目从字符串转换为objectId。