javabsonobject_JavaBSON使⽤
Java BSON使⽤
Java BSON 数据类型
⽬前,SequoiaDB ⽀持多种 BSON 数据类型。详情请查看数据模型 - ⽂档⼀节。
Java 构造 BSON 数据类型
整数/浮点数
时间正则表达式javaJava 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 ⽀持使⽤pes.BSONDecimal或者java.math.BigDecimal来⽣成⾼精度数。
// ⽅式⼀:使⽤BSONDecimal构造Decimal类型
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: {"$decimal":"12345.067891234567890123456789", "$precision":[100, 30]}}
BSONObject obj2 = new BasicBSONObject();
BSONDecimal decimal2 = new BSONDecimal(str, 100, 30);
obj2.put("b", decimal2);
// ⽅式⼆:使⽤BigDecimal构造Decimal类型
BSONObject obj3 = new BasicBSONObject();
obj3.put("c", new BigDecimal("1.2345")); // 注意:BigDecimal参数最终将转换为BSONDecimal,详情请查看API介绍。
字符串
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 使⽤ pes.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 使⽤ pes.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 使⽤ Pattern 来构造正则表达式数据类型。
BSONObject matcher = new BasicBSONObject();
Pattern obj = Patternpile("^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,当使⽤ String(),内容为:
{ "serial_num" : { "$options" : "i" , "$regex" : "^2001"}}
通过以下 bson 构造⽅式也可以得到相同的内容:
BSONObject matcher2 = new BasicBSONObject();
BSONObject obj2 = new BasicBSONObject();
obj2.put("$regex","^2001");
obj2.put("$options","i");
matcher2.put("serial_num", obj2);
但是,通过后者构造出的 matcher2 的数据类型是⼀个普通的对象嵌套类型,⽽不是正则表达式类型。
⽇期
Java BSON 使⽤ java.util.Date 来构造⽇期类型。
BSONObject obj = new BasicBSONObject();
Date now = new Date();
obj.put("date", now);
⼆进制
Java BSON 使⽤ pes.Binary 来构造⼆进制类型。
BSONObject obj = new BasicBSONObject();
String str = "hello world";
byte[] arr = Bytes();
Binary bindata = new Binary(arr);
obj.put("bindata", bindata);
时间戳
Java BSON 使⽤ pes.BSONTimestamp 来构造时间戳类型。
String mydate = "2014-07-01 12:30:30.124232";
String dateStr = mydate.substring(0, mydate.lastIndexOf('.'));
String incStr = mydate.substring(mydate.lastIndexOf('.') + 1);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(dateStr);
int seconds = (int)(Time()/1000);
int inc = Integer.parseInt(incStr);
BSONTimestamp ts = new BSONTimestamp(seconds, inc); BSONObject obj = new BasicBSONObject();
obj.put("timestamp", ts);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论