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);