Я создал массив в своем монго-документе, поэтому он выглядит примерно так:
{ "_id" : ObjectId("4f59e19d0b7aab2903000004"),
"details" : { x:1, y:2 }
}
Затем я пытаюсь вставить новое значение в массив, выполнив:
db.users.update({"_id" : ObjectId("4f59e19d0b7aab2903000004")},{$push: {"details": {"z":3}}});
Однако я получаю ошибку:
Cannot apply $push/$pushAll modifier to non-array
Кажется, единственный способ, которым я действительно могу добавить информацию в массив, - это использовать точечную запись, например,
db.users.update({"_id" : ObjectId("4f59e19d0b7aab2903000004")},{"details.z": 3});
Кажется, это работает, но когда у меня есть массив из примерно 30 значений, это кажется немного утомительным.
Просто для ясности, я использую литиевую среду PHP, а не просто ввожу их вручную, поэтому я мог бы перебирать массив для добавления «деталей». к каждому ключу, но я не думаю, что это необходимо. Я что-то упускаю из-за того, почему он не помещает значения в массив?
(мой литиевый код был следующим:)
User::update(array('$push'=>array('details'=>array('z'=>3))), array('_id'=>$id))
Спасибо
Dan