我正在尝试将数据集upsert
到 Mongo 集合。
- 预期的文档可能存在也可能不存在。
- 如果它确实存在,它将在嵌入文档 (zips) 中至少包含一个项目,并且应该附加到该文档而不是覆盖它。
- 如果不存在,则将新文档插入到集合中。
当我运行以下代码时,出现错误:MongoError: The dollar ($) prefixed field '$push' in '$push' is not valid for storage.
我根据文档将其放在一起:https://docs.mongodb.org/getting-started/node/update/#update-multiple-documents
版本: MongoDB( window )= 3.2.0; mongodb(npm 包)= 2.1.4
var query = {
county: aCountyName,
state: aStateName
}
var params = {
'$set': {
county: 'Boone',
state: 'MO',
'$push': {
zips: {
'$each': [ '65203' ]
}
}
}
}
(could also be)
var params = {
'$set': {
county: 'Pierce',
state: 'WA',
'$push': {
zips: {
'$each': [ '98499', '98499' ]
}
}
}
}
db.collection(collectionName).updateMany(query, params, {'upsert': true},
function(err, results) {
callback();
}
);
最佳答案
我不认为 $push
在 $set
中有效。而是尝试将其添加为另一个参数,例如:
var params = {
'$set': {
county: 'Pierce',
state: 'WA'
},
'$push': {
zips: {
'$each': ['98499',
'98499']
}
}
}
关于node.js - 蒙哥错误: The dollar ($) prefixed field '$push' in '$push' is not valid for storage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34795984/