Atualizar documento usando o resultado de campos concatenados
Considere uma coleção com os seguintes documentos
{
"_id" : "aaaaaaaaaaaa",
"title" : "Hello, World!",
"date" : "Thursday, November 12, 2015",
"time" : "9:30 AM",
"endtime" : "11:30 AM"
},
{
"_id" : "bbbbbbbbbbbb",
"title" : "To B or not to B",
"date" : "Thursday, November 12, 2015",
"time" : "10:30 AM",
"endtime" : "11:00 AM"
},
{
"_id" : "cccccccccccc",
"title" : "Family Time",
"date" : "Thursday, November 12, 2015",
"time" : "10:30 AM",
"endtime" : "12:00 PM"
}
Nesta saída simplificada, tenho eventos que tiveram seus horários de início, horário de término e datas inseridos como cadeias. Como posso usar campos em umupdate()
que usam os dados existentes para calcular novos dados do tipo Date () formados corretamente que eu posso realmente consultar.
O seguinte funciona para criar um novo campo "iso_start"
db.events.update({},{$set: {iso_start:Date()}},{multi: true})
Eu imaginei que seria capaz de criar uma espécie de atualização-seleção como essa
db.events.update({},{$set: {iso_start:Date(date + " " + time)}},{multi: true})
edb.events.update({},{$set: {iso_end:Date(date + " " + time)}},{multi: true})
mas recebo o erro "a data não está definida".
Atualizar:this.date
ethis.time
desapareceu o erro não definido, no entanto, as datas inseridas foram para a data / hora atual. Eu tentei escrevernew Date()
mas a data inserida foi ISODate ("0NaN-NaN-NaNTNaN: NaN: NaNZ")