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
  }
相关推荐
阿蒙Amon1 分钟前
C#常用类库-详解CsvHelper
开发语言·数据库·c#
006_5 分钟前
Java8的lambda用法总结
前端·数据库
倔强的石头1067 分钟前
KWDB 3.1.0 制造业实战:从 0 到 1 搭建工业设备健康监测系统
数据库·kwdb
qq_4924484469 分钟前
Maven直接下载jar包
数据库·maven·jar
开始了码11 分钟前
基于 Qt 实现多客户端 TCP 通信聊天室
开发语言·数据库·php
肥猪猪爸12 分钟前
数据库 2PC 极简流程图
java·数据库·分布式·mysql·分布式事务·2pc
dot to one19 分钟前
B树系列在数据库中的应用
数据结构·数据库·b树
小冯不疯24 分钟前
金蝶云星空与钉钉系统无缝对接方案
mongodb
七月初七7726 分钟前
使用Python连接MySQL数据库
数据库·python·mysql
悲伤小伞28 分钟前
0-MySQL 在 Centos 7环境详细安装过程
linux·服务器·数据库·mysql·centos