MongoError:'$ push'中的美元($)前缀字段'$ push'对存储无效

get*_*lad 9 mongodb node.js mongodb-query

我正在尝试将upsert数据集添加到Mongo集合中.

  • 预期文件可能存在也可能不存在.
    • 如果它确实存在,它将在嵌入文档中至少有一个项目(拉链),并且应该附加到该文档而不是覆盖它.
    • 如果它不存在,则应将新文档插入集合中.

当我运行以下代码时,我收到一个错误: 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(windows)= 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();
  }
);
Run Code Online (Sandbox Code Playgroud)

Owa*_*ams 21

我不认为$push是有效的$set.而是尝试将其添加为另一个参数,例如:

var params = {
  '$set': {
    county: 'Pierce',
    state: 'WA'
  },
  '$push': {
    zips: {
      '$each': ['98499',
      '98499']
    }
  }
}
Run Code Online (Sandbox Code Playgroud)