Object Ids 自動ID
Regular Expressions 正則表達式搜索記錄
Dates/Times 時間
Database References 數據基礎結構
Binary Data 二進制流
Timestamp Data 時間標記戳
Code Data 代碼數據
Embedded Documents 嵌入式文檔
Arrays 數組類型
詳細參考原來英文 http://docs.mongodb.org/ecosystem/drivers/java-types/
以下測試基礎的mongodb數據類型。
package com.javaer.mongo;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Pattern;
import org.bson.types.ObjectId;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.DBRef;
import com.mongodb.Mongo;
public class JavaTypes {
/**
* @param args
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException {
//基礎ID,自動增加 結構類似503991d90364b431cdc798e2
ObjectId id = new ObjectId();
System.out.println(id);
id = new ObjectId();
System.out.println(id);
//5039924c0364f4a124555e42
// 5039924c0364f4a124555e43 連續使用,自動增加,否則隨機生成
Mongo m = new Mongo();
DB db = m.getDB("yuexiaosheng");
DBCollection coll = db.getCollection("mycollection");
//使用標準庫的正則表達式,可以搜索數據里記錄。類似mysql中條件 where title like '%name%'
Pattern john = Pattern.compile(".*?jack*.?",Pattern.CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("title", john);
DBCursor cursor = coll.find(query);
try {
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
} finally {
cursor.close();
}
//mongodb中的時間類型
Date now = new Date();
BasicDBObject time = new BasicDBObject("ts", now);
coll.save(time);
//插入的記錄 { "_id" : ObjectId("503993b20364129f6625d349"), "ts" : ISODate("2012-08-26T03:10:42.146Z") }
//mongodb中的數組結構。
ArrayList x = new ArrayList();
x.add(1);
x.add(2);
x.add(new BasicDBObject("foo", "bar"));
x.add(4);
BasicDBObject doc = new BasicDBObject("x", x);
coll.save(doc);
//插入的記錄 { "_id" : ObjectId("503994500364bf9957b271a6"), "x" : [ 1, 2, { "foo" : "bar" }, 4 ] }
//存儲mongodb的數據結構數據到數據庫里
DBRef addressRef = new DBRef(db, "foo.bar", id);
DBObject address = addressRef.fetch();
DBObject person = BasicDBObjectBuilder.start()
.add("name", "Fred")
.add("address", addressRef)
.get();
coll.save(person);
//插入的數據記錄
//{ "_id" : ObjectId("503995390364fcf1b54905b2"), "name" : "Fred", "address" : { "$ref" : "foo.bar", "$id" : ObjectId("503995390364fcf1b54905af") } }
DBObject fred = coll.findOne();
DBRef addressObj = (DBRef)fred.get("address");
System.out.println(addressObj);
// { "$ref" : "foo.bar", "$id" : "5039965c03648efcd6281311
}
}