Дизайн Django MongoDB Двигатель список внешних ключей - PullRequest
1 голос
/ 14 марта 2012

Когда мы используем 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.Как и "members" : [ ObjectId("4e46434741b6994c70000000") ]

Мы также можем сохранить идентификатор MongoDB в виде строки:

# 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?

1 Ответ

2 голосов
/ 15 марта 2012

Внешний ключ вызывающе.Модель, на которую вы указываете, будет использовать объект в качестве _id, поэтому, сохраняя отношение в виде строки, вам необходимо преобразовать строку в objectId для каждого элемента в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...