3
在試圖更新文檔,我發現了。上述錯誤的字段timesToDisplay
MongoDB的版本2.6.7
整個模型:。
msg = {
'name': '',
'template': '',
'displayDurInMilliSec': 0,
'timesToDisplay': [],
'images': [],
'texts': [],
'screen': []
}
我想我會得到同樣的錯誤與其他3數組字段
我嘗試過使用$set
,但是sill得到相同的錯誤。
的代碼:
function updateMessage(msg) {
var conditions = {_id: msg._id}
, update = { 'name': msg.name,
'template': msg.template,
'displayDurInMilliSec': msg.displayDurInMilliSec,
'timesToDisplay': msg.timesToDisplay,
'images': msg.images,
'texts': msg.texts,
'screen': msg.screen
}
messageModel.update(conditions, update, callback);
function callback(err, numAffected) {
if (!err) console.log(numAffected)
else console.log(err)
}
}
編輯:的msg
參數是文檔本身:
{ _id: '557d58abd54955480db6694f',
name: 'msg99',
timesToDisplay: [ { startDate: '2015-06-19T21:00:00.000Z',
'$$hashKey': 'object:214',
endDate: '2015-06-25T21:00:00.000Z',
daysOfTheWeek: [Object],
startTimeOfDay: '11',
endTimeOfDay: '13' } ],
images: [],
texts: [],
screen: [ 1 ],
'$$hashKey': 'object:54',
displayDurInMilliSec: '40189',
template: 'templates/Template2.html' }
那麼這是一個非常簡單的信息。不幸的是,您並未向您顯示您在「msg」變量中包含的內容。這是毫無疑問的問題。加上**真的很糟糕的方式來做到這一點**。你應該用**'$ set' **和**'$ push' **和其他運營商不只是更新「代替」整個文檔。 – 2015-06-14 12:19:34
感謝您的評論,我編輯了這個問題。我想我需要刪除'$$ hashKey'字段。 – DeepSpace
你確實需要這樣做。任何帶有'$'的前綴「都被認爲是」保留的「。 MongoDB在各個領域使用這些前面的「操作符」。因此,使用'$'前綴嘗試命名存儲區域是非法的。夠清楚了嗎?該消息確實應該有全文。 – 2015-06-14 12:37:53