【问题标题】:Node.js MongoDB error: the update operation document must contain atomic operatorsNode.js MongoDB报错:更新操作文档必须包含原子操作符
【发布时间】:2018-05-24 16:46:31
【问题描述】:

错误是:更新操作文档必须包含原子操作符。

db.get().collection('users').updateOne(query, newvalues, function (err, result) {
    cb(err,result)
  })

我已经使用了 $set 运算符。我刚刚在控制台上打印了查询和新值,我找不到任何错误。

query: { username: 'macarra' }
newvalues: { $set: {name: "Mojo Picon",email: "mako@gmail.es"} }

【问题讨论】:

  • 我想我发现了错误,一个非常愚蠢的错误。我尝试使用字符串操作数“+=”附加到 newvalues,因此很可能 newvalues 不再是 JSON 对象了。

标签: node.js mongodb


【解决方案1】:

如果您有具有新值的对象:

var obj = {
   name: "Mojo Picon",
   email: "mako@gmail.es"
}

要构建 updateOne 方法所需的 newvalues 对象,您需要:

var newvalues = {
   $set: obj
}

【讨论】:

  • 只是为了澄清这对我有用:await collection.updateOne(filter, {$set: updateObject })
【解决方案2】:

更新示例代码。

db.collection(collectionName).findOneAndUpdate
(
    {  
        documentStatus:req.body.documentStatus, 
        auditTrail:auditArray
    },
    { $addToSet: {"clientArray": clientArrayElem}},
    { upsert:true}
);

请查看官方驱动文档或使用 noSQl booster IDE,它会在您尝试编辑文档时显示查询。

http://mongodb.github.io/node-mongodb-native/3.0/reference/ecmascriptnext/crud/

【讨论】:

  • findOneAndUpdate() 返回您更新的文档,但我使用的是 updateOne 方法
猜你喜欢
  • 2020-03-16
  • 2016-12-17
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2016-07-13
相关资源
最近更新 更多