Java 构造 BSON 数据类型

  • 整数/符浮点数

    Java BSON 构造整数/符浮点数类型

    // {a:123, b:3.14}
    BSONObject obj = new BasicBSONObject();
    obj.put("a", 123);
    obj.put("b", 3.14);
  • 字符串

    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 一节介绍的对象 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("$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 使用 org.bson.types.Binary 来构造二进制类型。

    BSONObject obj = new BasicBSONObject();
    String str = "hello world";
    byte[] arr = str.getBytes();
    Binary bindata = new Binary(arr);
    obj.put("bindata", bindata);
  • 时间戳

    Java BSON 使用 org.bson.types.BSONTimestamp 来构造时间戳类型。

    int sec = 1404189030 ; // 2014-07-01 12:30:30
    BSONObject obj = new BasicBSONObject();
    BSONTimestamp ts = new BSONTimestamp(sec, 0);
    obj.put("timestamp", ts);

Java 构造 BSON 数据类型的更多相关文章

  1. MongoDB(6)- BSON 数据类型

    BSON BSON是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用 跟 JSON 的数据结构很像,但是支持更丰富的数据类型 数据类型 数据类型 序号 别名 备注 Doubl ...

  2. Java的基本数据类型与转换

    1.1 Java为什么需要保留基本数据类型 http://www.importnew.com/11915.html 基本数据类型对大多数业务相关或网络应用程序没有太大的用处,这些应用一般是采用客户端/ ...

  3. 闲来无事——第一弹 Java基础 基本数据类型

    一个优秀的Java类一定要去优质的名称,类的命名主要有字母和数字,并且必须以字母开头:虽然说没有明确规定类名首字母要大写,但是实际上如果出现首字母小写的类名,那就呵呵了,坐等挨骂吧!类名首字母大写是业 ...

  4. Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  5. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

  6. Java学习——基本数据类型

    Java两大数据类型 内置数据类型 引用数据类型 变量就是申请内存存储值,内存管理系统根据变量的类型分配相应的存储空间存储该类型的数据. 内置数据类型 8中基本类型(四个整数型,两个浮点型),一种字符 ...

  7. JAVA:变量,数据类型,运算符,流程控制(简介)<1>

    一.安装和配置jdk 1.jdk是什么? (1).jdk全称是Java Development Kit, Java开发工具包; (2).jdk是sun公司开发的; (3).jdk主要包括:jre(Ja ...

  8. Java的基本数据类型

    java的基本数据类型是四类八种: 整型 byte  1字节  8位 short 2字节 16位 int 4字节 32位 long   8字节 64位 在hibernate自动映射中会根据数字长度,选 ...

  9. 学习java随笔第三篇:java的基本数据类型

    数据类型 一:整型 1.十进制 2.八进制 八进制数是满8进1,包含0~7的8个数字,在整数前面添加一个"0",表示是八进制数. 3.十六进制 十六进制数是满16进1,包含0~9, ...

随机推荐

  1. BZOJ2547 CTSC2002玩具兵(最短路径+二分答案+最大流)

    先不考虑只有一个显得有些特殊的天兵. 可以发现超能力的作用实质上是使兵更换职业.每一个兵到达某个位置最少需要更换职业的次数是彼此独立的,因为如果需要某两人互换职业可以使他们各自以当前职业到达需要到的地 ...

  2. 洛谷 P3629 [APIO2010]巡逻 解题报告

    P3629 [APIO2010]巡逻 题目描述 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通 ...

  3. WEB下载显示下载名称乱码--java

    将文件名编码转换为ISO8859-1即可,如下 downloadFileName = new String(fileName.getBytes("gbk"), "ISO8 ...

  4. 【转】如何学习android开发

    1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些.Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只 是机械的照抄别人的代码,是没有任何意 ...

  5. 【CSS】定义元素的位置

    CSS定义元素的位置html元素的position属性,有4个属性值,分别是static.relative.fixed.absolute static: 1.默认值,一般不显式设置为static 2. ...

  6. 一个中国地图的SVG,可以带参数

    <script src="http://files.cnblogs.com/files/LoveOrHate/jquery.min.js"></script> ...

  7. [整理]JS中的状态机

    /*StateMachine*/ var StateMachine = (function(){ function StateMachine(opts){ this.current = opts.in ...

  8. 一些CSS3的乐趣 - 工作也能发现乐的源头

    中秋节 translate 前些日子做一个中秋节的专题,主要就是写一个效果,月亮滚动,花瓣飘落.具体代码如下: .icons {z-index:10088; position:absolute; -w ...

  9. zTree的简单例子

    <%@ page language="java" pageEncoding="UTF-8" %> <%@ include file=" ...

  10. 【问题收集·知识储备】Xcode只能选择My Mac,不能选择模拟器如何解决?

      网友问题:请问打开一个应用,只能选择My Mac,不能选择模拟器如何解决? 答案:             下面将问答过程记录如下:     CHENYILONG Blog 请问打开一个应用,只能 ...