首页 > 解决方案 > 在 MongoDB 中使用按位或

问题描述

我正在做一个项目,我想在我的 Mongo 数据库中切换 0 和 1 之间的值。我已经将每个值从默认的 double 设置为 32 位 Int。但是,每次运行此代码时,都会出现此错误:

> db.players.update({name: "Patrick Mahomes"}, {$bit: {active: {xor:1}}})
WriteResult({
        "nMatched" : 0,
        "nUpserted" : 0,
        "nModified" : 0,
        "writeError" : {
                "code" : 2,
                "errmsg" : "The $bit modifier field must be an Integer(32/64 bit); a 
'double' is not supported here: {xor: 1.0}"
        }

知道为什么会这样吗?当我查询活动字段类型时,它会返回我数据库中的所有对象。

> db.players.find({active: {$type:16}})

这最终将成为在网站上单击按钮以在两种不同状态之间切换的功能。

标签: mongodbmongodb-querybitwise-xor

解决方案


您能否尝试使用NumberInt提供价值。

db.players.update({name: "Patrick Mahomes"}, {$bit: {active: {xor:NumberInt(1)}}})

在此处检查文档


推荐阅读