Подтвердить что ты не робот

Как создать вложенный индекс в MongoDB?

а. Как индексировать "вложенные" и все значения?

В. Как индексировать значение?

{
    id: 00000,
    attrs: {
        nested:{
            value: value1,
            valuetwo: value2,
        }
    }
}

Я посмотрел здесь: http://www.mongodb.org/display/DOCS/Indexes, и документы, насколько мне известно, не совсем понятны для индексирования вещей, которые не являются вложенный.

4b9b3361

Ответ 1

Вы создадите их так же, как если бы вы создавали индекс в поле верхнего уровня:

db.collection.ensureIndex({"attrs.nested.value": 1})

Вам нужно явно создавать индексы для каждого поля.

Ответ 2

A. Чтобы проиндексировать все свойства в "вложенных", вам придется индексировать их отдельно:

db.collection.createIndex({"attrs.nested.value": 1});
db.collection.createIndex({"attrs.nested.valuetwo": 1});

Это можно сделать одной командой:

db.collection.createIndex({"attrs.nested.value": 1, "attrs.nested.valuetwo": 1});

Б. для индексации просто "valuetwo":

db.collection.createIndex({"attrs.nested.valuetwo": 1})

Использовать createIndex вместо sureIndex, так как sureIndex устарел с версии 3.0.0

Ответ 3

MongoDB автоматически создает индекс с несколькими ключами, если любое индексированное поле является массивом; вам не нужно явно указывать тип мультиключа.

Это будет работать как для сценария db.coll.createIndex({"addr.pin": 1})

Сценарий 1 вложенных ОБЪЕКТОВ

{
  userid: "1234",
  addr: {
    pin:"455522"
  }
},
{
  userid: "1234",
  addr: {
    pin:"777777"
  }
}

Сценарий 2 вложенных массива

{
  userid: "1234",
  addr: [
    { pin:"455522" },
    { pin:"777777" },
  ]
}

https://docs.mongodb.com/manual/core/index-multikey/