Индексация ключей объектов в MongoDB - PullRequest
4 голосов
/ 17 октября 2011

У меня есть эта структура

{
    "_id": "willwill",
    "rental": {
        "hitchhikergalaxy": {[...]},
        "animalfarm": {[..]}
    }
}

Какой [..] является встроенным документом, в котором хранятся сведения об аренде (и точно такие же данные существуют и в другой коллекции), а ключи объекта rental составляют _id из коллекции book.

Как мне ensureIndex() запрос?

db.users.find({"rental.animalfarm": {'$exists': true}})

(я использую MongoDB на PHP, но приведенный выше пример на JavaScript)

1 Ответ

4 голосов
/ 19 октября 2011

Возможно, вы захотите подумать о рефакторинге документа так, чтобы:

"rental": 
  [
     { "name":"hitchikergalaxy", "attributes": { your stuff } },
     { "name":"animalfarm", "attributes": { your stuff } }
  ]

Теперь у вас есть путь к внутреннему индексу "rental.name"

. Далее вы можете найти все документы, гдеПользователь арендовал animalfarm, используя:

db.users.find( { "rental.name": "animalfarm" } )

Я прошел путь использования данных в качестве ключей / имен - и всегда кажется, что все усложняется, чем нужно.

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