尝试更新文档时,我收到字段timesToDisplay
的上述错误。
MongoDB版本2.6.7。
整个模型:
msg = {
'name': '',
'template': '',
'displayDurInMilliSec': 0,
'timesToDisplay': [],
'images': [],
'texts': [],
'screen': []
}
我想我会在其他3个数组字段中得到同样的错误。
我已尝试使用$set
,但基本上会收到同样的错误。
代码:
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' }
答案 0 :(得分:6)
使用ngRepeat或ngOptions时,AngularJS会添加$$hashkey
字段。对于ngRepeat,您可以通过向其添加track by $index
来更改重复字符串。要使用ngOptions,您必须自己过滤掉该字段。 AngularJS提供了一种快速解决方案:angular.toJson
。这将过滤掉所有前缀为两美元符号的字段。 Check out the documentation
我意识到这不是MongoDB的答案,但是这个特定错误($$ hashkey)通常是由于AngularJS。