В коллекции MongoDB я хочу добавить новый объект в массив, который может существовать или не существовать, с датой создания объекта в качестве одного из полей. Вот базовая версия структуры моей коллекции test
, показывающая результат, которого я хочу достичь:
{
"_id" : 1,
"parent" : {
"array_1" : [
{ "key" : "value_1"
, "created": ISODate(...)
}
]
}
}
В meteor mongo
я создаю родителя с помощью следующих команд:
use test
db.test.insert({ _id: 1, parent: {} })
Я могу добавить новый массив с помощью следующей команды:
db.test.update(
{ _id: 1 }
, { $push: {
"parent.array_1": {
key: "value_1"
}
}
}
, { $currentDate:
{ "parent.array_1.$.created": true }
}
)
Однако в результирующем массиве поле created
не добавляется. Мне нужно использовать вторую команду, которая ссылается на массив в запросе выбора:
db.test.update(
{ _id: 1
, "parent.array_1.key": "value_1"
}
, { $currentDate:
{ "parent.array_1.$.created": true}
}
)
Есть ли способ вставить поле created
одновременно с элементом массива, которому оно принадлежит, в одной команде?