1

当我们使用 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)})

上面的将字段“成员”存储为 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 查询更有效?

4

1 回答 1

2

一个外键挑衅。您指向的模型将使用objectid,因为它是_id,因此通过将关系存储为字符串,您需要将列表中的每个项目从字符串转换为objectId。

于 2012-03-14T21:36:12.263 回答