Изменить поле по числу в вложенном массиве
Скажем, есть структура данных, содержащая такие объекты, как
{
name : 'ernie',
likes : [
{
what : 'rubber duckie',
howmuch : 5
},
{
what : 'bert',
howmuch : 3
}]
}
и
{
name : 'cookie monster',
likes : [
{
what : 'cookies',
howmuch : 100
}]
}
Если 0
-й элемент ernie
likes
-array должен иметь значение howmuch
-value, например, на 1, есть ли команда MongoDB для этого? JavaScript-эквивалент будет ernie.likes[0].howmuch++
.
В частности, можно получить доступ к элементам массива по индексу?
Ответы
Ответ 1
Чтобы увеличить значение поля howmuch
на 1 из 0
-го элемента массива ernie-like, используйте $inc
вместе с точечной нотации, чтобы получить доступ к элементу массива с нулевым значением, на основе индекса:
db.collection.update(
{
"name": "ernie"
},
{
"$inc" : { "likes.0.howmuch" : 1 }
}
)
Ответ 2
Вы хотите создать индекс в массиве? если да, вам нужно создать индекс в массиве "любит". с этим кодом: db.sample.createIndex ({likes : 1})
. или, более конкретно, вам нужно создать db.sample.createIndex ({'likes.howmuch': 1})
После создания индекса вы можете получить доступ к элементам массива с индексом.