写点什么

Java BSON 使用,springboot 运行原理理解

用户头像
极客good
关注
发布于: 刚刚

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

[](

)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 来构造正则表达式数据类型。


BSONObject matcher = new BasicBSONObject(); Pattern obj = Pattern.compile("^2001",Pattern.CASE_INSENSITIVE); matcher.put("serial_num", obj); BSONObject modifier = new BasicBSONObject("$set", new BasicBSONObject("count",1000)); cl.update(matcher, modifier, null);


以上使用正则表达式构造了一个匹配条件,将序列号以“2001”开头的记录的“count”字段内容改为“1000”。


Note:


以上使用 Patten 构造的 bson matcher,当使用 matcher.toString(),内容为:


{ "serial_num" : { "$options" : "i" , "$regex" : "^2001"}}


通过以下 bson 构造方式也可以得到相同的内容:


`BSONObject matcher2 = new BasicBSONObject(); BSONObject obj2 = new BasicBSONObject(); obj2.put("options","i"); matcher2.put("ser


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


ial_num", obj2);`


但是,通过后者构造出的 matcher2 的数据类型是一个普通的对象嵌套类型,而不是正则表达式类型。

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Java BSON使用,springboot运行原理理解