Mongodb с типом Python "set ()" - PullRequest
       2

Mongodb с типом Python "set ()"

4 голосов
/ 02 февраля 2012

Я создаю веб-приложение с mongoDB в качестве бэкэнда.Некоторые из документов должны хранить коллекцию элементов в каком-либо списке, а затем система должна будет часто проверять, присутствует ли указанный элемент в этом списке.Использование оператора «in» в Python занимает время Big-O (N), n - размер списка.Поскольку этот список может стать довольно большим, я хочу что-то быстрее, чем это.Тип 'set' в Python выполняет эту операцию в постоянное время (и обеспечивает уникальность, что хорошо в моем случае), но считается недопустимым типом данных для размещения в MongoDB.

Так что лучший способ сделать это?Есть ли способ просто использовать обычный список и использовать функции индексации Монго?Опять же, я хочу знать, для данного документа в коллекции, содержит ли список внутри этого документа определенный элемент?

1 Ответ

4 голосов
/ 02 февраля 2012

Вы можете представить набор с помощью словаря. Ваши элементы становятся ключами, и все значения могут быть установлены в константу, такую ​​как 1. Оператор in проверяет наличие ключа.

EDIT. MongoDB сохраняет dict как документ BSON, где ключи должны быть строками (с некоторыми дополнительными ограничениями), поэтому приведенный выше совет имеет ограниченное применение.

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