Java BSON使用

| 值类型 | 定义 | 比较优先级权值 | 用例 |

| — | — | — | — |

| 整数 | 整数 范围:-2147483648 至 2147483647 | 10 | { "key" : 123 } |

| 长整数 | 整数 范围:-9223372036854775808 至 9223372036854775807 如果用户指定的数值无法适用于整数,则 SequoiaDB 自动将其转化为浮点型 | 10 | { "key" : 3000000000 } 或{ "key" : { "$numberLong" : "3000000000" } } |

| 浮点数 | 浮点数 范围:-1.7E+308 至 1.7E+308 | 10 | { "key" : 123.456 } 或 { "key" : 123e+50 } |

| 高精度数 | 高精度数 范围:小数点前最高 131072 位,小数点后最高 16383 位 请参考 高精度数 | 10 | { "key" : { $decimal:"123.456" } } |

| 字符串 | 双引号包含的字符串 | 15 | { "key" : "value" } |

| 对象 | ID(OID) 十二字节对象 ID请参考 对象 ID | 35 | { "key" : { "$oid" : "123abcd00ef12358902300ef" } } |

| 布尔 | true 或者 false | 40 | { "key" : true } 或 { "key" : false } |

| 日期 | YYYY-MM-DD 的日期形式范围:0000-01-01 至 9999-12-31请参考 日期 | 45 | { "key" : { "$date" : "2012-01-01" } } |

| 时间戳 | YYYY-MM-DD-HH.mm.ss.ffffff 的时间戳形式范围:1902-01-01-00.00.00.000000 至 2037-12-31-23.59.59.999999 请参考 时间戳 | 45 | { "key" : { "$timestamp" : "2012-01-01-13.14.26.124233" } } |

| 二进制数据 | Base64 形式的二进制数据 请参考 二进制数据 | 30 | { "key" : { "$binary" : "aGVsbG8gd29ybGQ=", "$type" : "1" } } |

| 正则表达式 | 正则表达式 请参考 正则表达式 | 50 | { "key" : { "$regex" : "^张", "$options" : "i" } } |

| 对象 | 嵌套 JSON 文档对象 | 20 | { "key" : { "subobj" : "value" } } |

| 数组 | 嵌套数组对象 请参考 数组 | 25 | { "key" : [ "abc", 0, "def" ] } |

| 空 | null | 5 | { "key" : null } |

| 最小值 | 比所有值小 | -1 | { "key" : {"$minKey": 1 } } |

| 最大值 | 比所有值大 | 127 | { "key" : {"$maxKey": 1 } } |

Note:

不同类型字段的值进行比较时,比较优先级权值越大,该类型的值就越大。

Java 构造 BSON 数据类型
  • 整数/浮点数

Java BSON 构造整数/浮点数类型// {a:123, b:3.14}

BSONObject obj = new BasicBSONObject(); obj.put("a", 123); obj.put("b", 3.14); // or BSONObject obj2 = new BasicBSONObject().append("a", 123).append("b", 3.14); // or BSONObject obj3 = (BasicBSONObject) JSON.parse("{\"a\":123, \"b\":3.14}");

  • 高精度数

Java BSON 构造不带精度要求的Decimal类型// {a:{“$decimal”:“12345.067891234567890123456789”}}

String str = "12345.067891234567890123456789"; BSONObject obj = new BasicBSONObject(); BSONDecimal decimal = new BSONDecimal(str); obj.put("a", decimal);

Java BSON 构造一个最多有100位有效数字,其中小数部分最多有30位的Decimal类型// {b:{“ d e c i m a l " : " 12345.067891234567890123456789 " , " decimal":“12345.067891234567890123456789”, " decimal":“12345.067891234567890123456789”,"precision”:[100, 30]}}

BSONObject obj2 = new BasicBSONObject(); BSONDecimal decimal2 = new BSONDecimal(str, 100, 30); obj2.put("b", decimal2);

  • 字符串

Java BSON 构造字符串类型// {a:“hi”}

BSONObject obj = new BasicBSONObject(); obj.put("a", "hi");

  • 空类型

Java BSON 构造空类型// {a:null}

BSONObject obj = new BasicBSONObject(); obj.put("a", null);

  • 对象

Java BSON 构造嵌套对象类型// {b:{a:1}}

BSONObject subObj = new BasicBSONObject(); subObj.put("a", 1); BSONObject obj = new BasicBSONObject(); obj.put("b", subObj);

  • 数组

Java BSON 使用 org.bson.types.BasicBSONList 来构造数组类型// {a:[0,1,2]}

BSONObject obj = new BasicBSONObject(); BSONObject arr = new BasicBSONList(); arr.put("0", 0); arr.put("1", 1); arr.put("2", 2); obj.put("a", arr);

  • 布尔

Java BSON 构造布尔类型// {a:true, b:false}

BSONObject obj = new BasicBSONObject(); obj.put("a", true); obj.put("b", false);

  • 对象 ID

Java BSON 使用 org.bson.types.ObjectId 来生成每条记录的“_id”字段内容。Java BSON 12 字节的 ObjectId 与 数据类型一节介绍的对象 ID 略有不同,目前,Java ObjectId 的 12字节内容由三部分组成:4字节精确到秒的时间戳,4字节系统(物理机)标示,4字节由随机数起始的序列号。默认情况下,数据库为每条记录生成一个字段名为“_id”的唯一对象 ID。

BSONObject obj = new BasicBSONObject(); ObjectId id1 = new ObjectId(); ObjectId id2 = new ObjectId("53bb5667c5d061d6f579d0bb"); obj.put("_id", id1);

  • 正则表达式

Java BSON 使用 java.util.regex.Pattern 来构造正则表达式数据类型。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值