Ответ 1
Вы создадите их так же, как если бы вы создавали индекс в поле верхнего уровня:
db.collection.ensureIndex({"attrs.nested.value": 1})
Вам нужно явно создавать индексы для каждого поля.
а. Как индексировать "вложенные" и все значения?
В. Как индексировать значение?
{
id: 00000,
attrs: {
nested:{
value: value1,
valuetwo: value2,
}
}
}
Я посмотрел здесь: http://www.mongodb.org/display/DOCS/Indexes, и документы, насколько мне известно, не совсем понятны для индексирования вещей, которые не являются вложенный.
Вы создадите их так же, как если бы вы создавали индекс в поле верхнего уровня:
db.collection.ensureIndex({"attrs.nested.value": 1})
Вам нужно явно создавать индексы для каждого поля.
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
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" },
]
}