2011-10-28

MongoDB 小試

今天又測試了 MongoDB,覺得還蠻有趣的,只管新增資料,就可以直接查詢了,毋須留意 table schema。

主要有兩個測試,分列如下:

[Question 1]
     relational database 中的一筆資料有多個欄位,在 MongoDB 中如何達到這種效果呢?



Answer:
    其實所謂的 name value pair,並不是指一筆 record 只允許有一組值而已。而是像 JSON,一筆 record 允許多個 property 及其值,甚至也允許一個 property 之值為 JSON (亦即多組 name value)之值。
    舉例最快:
        db.foo.insert ({name:"Mary", age:25, address:"XinZhuang 40, New Taipei", city:"NewTaipei"});
        db.foo.insert( { _id: "Alex", name: {first:"Alex", last:"Bush" }, age: 35})
    ps: 其中,foo 是一個 collection,在語法上可以 show collections; 來列出全部的 collections。collection 在概念上就像 relational database 中的 table,只不過 collection 不需要自己 create,而且如果存放的 property 變動時,毋須 alter table 的指令,只管變動即可。

[Question 2]
     How to select data in MongoDB?

Answer:
     其實,MongoDB 網站以及網路上已經有人將 relational database 常用到的 SQL command 對應到 MongoDB 的用法寫出來了。基本的用法應該還蠻直覺的,而我目前還沒有研究到比較複雜的用法。
     實例如下:
        db.foo.find();    //列出 foo collection 中之全部 record: select * from foo;
        db.foo.find({age:25});    // select * from foo where age = 25;
        db.foo.find({name:"Mary"});  //select * from foo where name = "Mary";
     其他像 >, <, like, order by... 等等,也都有相對應語法。
     對了,有一點要特別注意的是,英文大小寫是視為不同的,這與 MySQL 預設是不同的。   

0 意見:

張貼留言