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. pgm7

    和 Koller 的 video 最大的不同莫过于书上讲 LBP 的角度不是 procedural 的,而是原理性的.我们先看个 procedural 的,在一般的 cluster graph 上的 ...

  2. word 里面没输入法

    文件,选项,高级,输入法控制处于活动状态   ,有勾选就去掉,无勾选就勾上,确定后重开word即可

  3. BZOJ 2427 [HAOI2010]软件安装 | 这道树形背包裸题严谨地证明了我的菜

    传送门 BZOJ 2427 题解 Tarjan把环缩成点,然后跑树形背包即可. 我用的树形背包是DFS序上搞的那种. 要注意dp数组初始化成-INF! 要注意dp顺推的时候也不要忘记看数组是否越界! ...

  4. bzoj4807 車

    题目大意: Description 众所周知,車是中国象棋中最厉害的一子之一,它能吃到同一行或同一列中的其他棋子.車跟車显然不能在一起打 起来,于是rly一天又借来了许多许多的車在棋盘上摆了起来……他 ...

  5. 如何查去别人的ip,进行定位

  6. John:How JavaScript Timers Work

    John大神的bolg链接:http://ejohn.org/blog/how-javascript-timers-work/ JavaScript中的定时器经常表现的跟我们想象的不同,我们用三个函数 ...

  7. ubuntu 下 python模块 mysql-python安装(转)

    原文:http://www.cnblogs.com/51kata/p/5406468.html 直接运行如下命令 sudo pip install MySQL-python 报如下错误 xxx@ubu ...

  8. bzoj千题计划247:bzoj4903: [Ctsc2017]吉夫特

    http://uoj.ac/problem/300 预备知识: C(n,m)是奇数的充要条件是 n&m==m 由卢卡斯定理可以推出 选出的任意相邻两个数a,b 的组合数计算C(a,b)必须是奇 ...

  9. html5 canvas结构基础

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. php-url地址加密

    下面是可以将我们的url地址加密.确保我们提交的数据安全 以下是代码片段: <?php function keyED($txt,$encrypt_key) //定义一个keyED { $encr ...