MongoDB Оператор обновления массива - $ push
Описание
В MongoDB оператор $ push используется для добавления указанного значения в массив. Если упомянутое поле отсутствует в документе для обновления, оператор $ push добавляет его в качестве нового поля и включает упомянутое значение в качестве своего элемента. Если поле обновления не является полем типа массива, операция не удалась.
Во время обновления, если само значение является массивом, оператор $ push добавляет весь массив как один элемент.
Если вы хотите добавить каждый элемент значения отдельно, оператор $ push может использоваться с модификатором $ each.
Синтаксис:
db.collection.update (<запрос>, {$ push: {<поле>: <значение>}})
Параметры:
название | Описание |
---|---|
поле | имя столбца или поля документа. |
значение... | Это значения, которые должны быть указаны для полей или столбцов. |
запрос | Запрос может быть выражением, условием или критерием. |
Образец коллекции "Студент"
{
"_id" : 1,
"sem" : 1,
"subjects" : [
"phys",
"chem",
"maths",
"gkn",
"stat",
"astro"
],
"achieve" : [
70,
87,
90,
90,
65,
81
]
}
Пример оператора push-сообщения MongoDB $
Если мы хотим добавить 95 к полю массива, достигаемому по отношению к условию субъекта «gkn», можно использовать следующую команду mongodb:
> db.student.update( { "subjects" : "gkn" },{ $push: { "achieve": 95 } });
Здесь в вышеприведенном примере значение 95 будет добавлено в массив достижения , потому что упомянутое условие совпадает для этой операции.
Чтобы увидеть недавно обновленный документ -
> db.student.find().pretty();
Вывод команды:
{ "_id": 1, "достичь": [ 70, 87, 90, 90, 65, 81, 95 ], "сем": 1, "предметы" : [ "Phys", «Хим», "математика", "GKN", «Стат», «Астро» ] }
Пример оператора push-запроса MongoDB $, когда поле не является массивом
Если мы хотим добавить 2 в поле sem, которое не является полем типа массива, можно использовать следующую команду mongodb:
> db.student.update( { "subjects" : "gkn" },{ $push: { "sem": 2 } });
Здесь в приведенном выше примере поле sem не является полем типа массива, поэтому операция не будет выполнена и выдаст следующий вывод
Выход
{Невозможно применить модификатор $ push / $ pushAll к не массиву
Пример оператора push-запроса MongoDB $ с использованием модификаторов $ each
Если мы хотим добавить несколько элементов или более одного элемента (77,49,83) в массив достижения для студента документа для субъектов условия «GKN», следующий MongoDB может быть использована команда -
> db.student.update( { "subjects" : "gkn" },{ $push: { "achieve": {$each : [77,49,83 ]} } });
Здесь , в приведенном выше примере $ каждый модификатор использовал для добавления нескольких элементов 77,49,83 в массив , который соответствует достижению субъектов условию равен «GKN».
Чтобы увидеть недавно обновленный документ -
> db.student.find().pretty();
Вывод команды:
{ "_id": 1, "достичь": [ 70, 87, 90, 90, 65, 81, 77, 49, 83 ], "сем": 1, "предметы" : [ "Phys", «Хим», "математика", "GKN", «Стат», «Астро» ] }
Предыдущая: $ pullAll
Next: Операторы агрегации трубопроводов
Новый контент: Composer: менеджер зависимостей для PHP , R программирования