javascript - 我该如何修复这个 mongodb 错误? : MongoError: The dollar ($) prefixed field '$cond' in 'energy.$cond' is not valid for storage

标签 javascript mongodb

当我尝试对 mongoDB 使用以下代码时,出现此错误:

var updateDoc = {
    $set: { 
        energy: { 
            $cond: { 
                if: { $gt: [ { $add: [ "$energy", 20 ] }, 100 ] }, 
                then: 100, 
                else: { $add: [ "$energy", 20 ] } 
            } 
        } 
    }
  }

如何解决这个问题?

最佳答案

$cond是一个聚合运算符,更新不能在这个简单查询中允许该运算符,

看看update with aggregation pipeline从 MongoDB v4.2 开始,

您只需将 updateDoc 对象包装到数组中,

var updateDoc = [
  {
    $set: {
      energy: {
        $cond: {
          if: { $gt: [{ $add: ["$energy", 20] }, 100] },
          then: 100,
          else: { $add: ["$energy", 20] }
        }
      }
    }
  }
]

Playground

关于javascript - 我该如何修复这个 mongodb 错误? : MongoError: The dollar ($) prefixed field '$cond' in 'energy.$cond' is not valid for storage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66335817/

相关文章:

javascript - Angular:在 iFrame 中运行脚本

javascript - 使用 IIFE 时避免在循环中定义函数

php - 使用 PHP 驱动程序将具有私有(private)成员的对象保存到 MongoDb 时出错

javascript - POST后Express js MongoDB返回对象

javascript - 在哪里可以找到 _id.$oid 的 mongodb 文档?

mongodb - 如何在 MongoDB 中管理并发?

javascript - 更新传单中的标记

javascript - 是否可以使用 jQuery 来反弹图像

javascript - 经过另一个时隐藏固定元素

php - MongoDB/PHP 不喜欢俄语字符