node.js - 蒙哥错误: The dollar ($) prefixed field '$push' in '$push' is not valid for storage

标签 node.js mongodb mongodb-query

我正在尝试将数据集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/

相关文章:

javascript - 如何仅在所有默认项都通过并且没有错误后才运行 Gulp 任务?

php - 通过PHP MongoDB Driver将数据从mongodb导入mysql应该怎么做?

mongodb - 如果未找到结果,则返回 null 默认值

mongodb - 如何在 MongoDB 更新中将字段的值推送到同一文档的另一个数组字段中

javascript - 无法读取未定义的属性 'main'

javascript - 将一个函数绑定(bind)到多个套接字

node.js - 如何聚合 Mongoose 中嵌入文档的字段

php - Mongodb 组和项目运营商

node.js - 如何使用 Mongoose 创建具有可选 $in 的条件查询?

mongodb - 在 mongodb 中使用未知键查询