- A document is the basic unit of data for MongoDB, roughly equivalent to a row in a relational database management system (but much more expressive).
- Similarly, a collection can be thought of as the schema-free equivalent of a table.
- A single instance of MongoDB can host multiple independent databases, each of which can have its own collections and permissions.
- MongoDB comes with a simple but powerful JavaScript shell, which is useful for the administration of MongoDB instances and data manipulation.
- Every document has a special key, "_id", that is unique across the document’s collection.
collection很好理解但document就字面上有點難理解,但看完Java Driver運作方式後,對document我的認知如下:
MongoDB的document長像是JSON的格式,document在RDBMS上如同是一個row。
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : { x : 203, y : 102 }
}
在mongoDB java Driver使用上要寫入如上JSON格式資料的語法如下:
//建立最外層key:value,此時還不是完整的parent document
BasicDBObject doc = new BasicDBObject();
doc.put("name", "MongoDB");
doc.put("type", "database"); doc.put("count", 1);
//建立info的sub document
BasicDBObject info = new BasicDBObject();
info.put("x", 203);
info.put("y", 102);
//將sub document寫入doc使其成為完整的parent document.
doc.put("info", info);
//將這個完整的parent document插入到collection,這個collection類似RDBMS的table.
coll.insert(doc);
由程式邏輯來理解
我認為由最外層來看這個結構是一個parent document
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : { x : 203, y : 102 }
}
//而info的value也是一個document,就是parent document裡再包含了一個sub document.
{ x : 203, y : 102 }
因此整個JSON格式就可以看成是RDBMS裡的一個row,對於想從mongoDB拿資料的程式來說這一個最外層就是一個document,而對於mongoDB自己內部來說內層那個info也是一個document。
從程式邏輯來看能理解MongoDB的資料結構了,但我無法很明白的來敘述這種關係,並且理解也可能有誤解,不過當由程式直接操作來看,document到底是什麼就變得不是那麼重要,有點張無忌學太極拳、劍,最後無招勝有招。
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : { x : 203, y : 102 }
}
在mongoDB java Driver使用上要寫入如上JSON格式資料的語法如下:
//建立最外層key:value,此時還不是完整的parent document
BasicDBObject doc = new BasicDBObject();
doc.put("name", "MongoDB");
doc.put("type", "database"); doc.put("count", 1);
//建立info的sub document
BasicDBObject info = new BasicDBObject();
info.put("x", 203);
info.put("y", 102);
//將sub document寫入doc使其成為完整的parent document.
doc.put("info", info);
//將這個完整的parent document插入到collection,這個collection類似RDBMS的table.
coll.insert(doc);
由程式邏輯來理解
我認為由最外層來看這個結構是一個parent document
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : { x : 203, y : 102 }
}
//而info的value也是一個document,就是parent document裡再包含了一個sub document.
{ x : 203, y : 102 }
因此整個JSON格式就可以看成是RDBMS裡的一個row,對於想從mongoDB拿資料的程式來說這一個最外層就是一個document,而對於mongoDB自己內部來說內層那個info也是一個document。
從程式邏輯來看能理解MongoDB的資料結構了,但我無法很明白的來敘述這種關係,並且理解也可能有誤解,不過當由程式直接操作來看,document到底是什麼就變得不是那麼重要,有點張無忌學太極拳、劍,最後無招勝有招。
沒有留言:
張貼留言