Mongodb在UPDATE中使用二进制运算更新字段

学习mongodb,体会mongodb的每一个使用细节,欢迎阅读威赞的文章。这是威赞发布的第75篇mongodb技术文章,欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题,欢迎在文章下面点个赞,或者关注威赞。谢谢。

Mongodb的UPDATE提供了各种各样的方法,包括字段数值增加,数组更新等。本文介绍Mongodb使用$bit方法更新字段。

定义

$bit操作符,对指定字段进行二进制更新。该操作符支持二进制与运算,或运算和异或运算。按照下面的形式,使用$bit操作符。

{ $bit: {<field>: { <and|or|xor>: <int>}}}

$bit操作符,只能应用在整型数值类型字段的更新。更新嵌入式文档或嵌入式数组是,需要使用点操作符。

行为

  • 自mongodb5.0开始,UPDATE操作按照字段名称的字典顺序更新字段。当字段中包含数字时,按照数字顺序依次更新字段。当然,对一个文档的多个字段操作,是原子性的。
  • mongodb 5.0版本以后,向$bit传入空表达式({ })时,mongodb不再抛出错误。空表达式不会修改字段值 ,也不会在oplog中,添加新的操作记录。

应用

构建集合switches并插入数据,其中expdata字段,是整型数字类型的字段

db.switches.insertMany([{
    _id: 1,expdata: Int32(13)
},{
    _id: 2,expdata: Int32(3)
},{
    _id: 3,expdata: Int32(1)
}])

与运算

构建数据更新语句,对expdata进行二进制更新。

db.switches.updateOne({_id: 1}, {$bit: {expdata: {and: Int32(10)}}})

查看更新结果

db.switches.find()
{
    "_id": 1,
    "expdata": 8
  }

或运算

构建数据更新语句,使用或运算更新文档。

db.switches.updateOne({_id: 2}, {$bit: {expdata: {or: Int32(5)}}})

查看更新结果

{
    "_id": 2,
    "expdata": 7
  }

异或运算

构建数据更新语句,使用或运算更新文档。

db.switches.updateOne({_id: 3}, {$bit: {expdata: {xor: Int32(5)}}})

查看更新结果

{
    "_id": 3,
    "expdata": 4
  }

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
安装的步骤为: 1. 下载MongoDB二进制文件,并解压缩到指定目录。例如,使用以下命令下载并解压MongoDB二进制文件: ```shell cd /usr/local/src/ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.5.tgz tar xf mongodb-linux-x86_64-4.0.5.tgz mv mongodb-linux-x86_64-4.0.5 /usr/local/mongodb ``` 在这个例子MongoDB二进制文件被下载到`/usr/local/src/`目录,并解压缩到`/usr/local/mongodb`目录。 2. 创建数据和日志存放目录。使用以下命令创建数据和日志存放目录: ```shell mkdir /data/mongodata -p mkdir /data/logs/mongolog -p ``` 这个例子,数据存放目录被创建在`/data/mongodata`,日志存放目录被创建在`/data/logs/mongolog`。 3. 设置环境变量。使用以下命令设置环境变量: ```shell echo 'export PATH=$PATH:/usr/local/mongodb/bin' >> /etc/profile source /etc/profile ``` 这个例子,将MongoDB的bin目录`/usr/local/mongodb/bin`添加到环境变量。 这些步骤将帮助您安装MongoDB二进制文件并进行必要的配置。希望对您有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [二进制安装Mongodb](https://blog.csdn.net/Hlroliu/article/details/128723238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [二进制安装MongoDB](https://blog.csdn.net/qq_40573385/article/details/108741985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

威赞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值