MongoDB 的 CRUD

Create

透過db.collection.insert(document, options)方法達成 如果 document 沒有 _id 欄位,會自動加入,型別是 ObjectId 如果 document 有 _id 欄位,內容在 Collection 裡頭必須是唯一的,否則會產生 Duplicate Key 例外

insert 單筆

db.library.insert({
    _id:"4-1_1",
    book:"實用英文會話",
    price:299.0, authors: ["Jason", "Mary", "Bob"],
    borrower:{
            name:"王小明",
            timestamp:ISODate("2015-07-23T12:00:00Z")
    }
});

insert 多筆 library資料

db.library.insert([{
    _id:"4-1_1",
    book:"實用英文會話",
    price:299.0, authors: ["Jason", "Mary", "Bob"],
    borrower:{
            name:"王小明",
            timestamp:ISODate("2015-07-23T12:00:00Z")
    }
},
{
    _id:"4-1_2",
    book:"七天學會大數據資料庫處理-NoSQL:MongoDB入門與活用",
    price:360.0, authors: ["黃小嘉"],
    borrower:{name:"王小明", timestamp:ISODate("2015-07-24T12:30:00Z")}
},
{
    _id:"4-1_3",
    book:"日本環球影城全攻略",
    price:280, authors: ["Jason", "Mary", "Bob"]
}]);

insert 多筆chatroom資料

db.chatroom.insert([
{
    _id:"4-2_1",
    members: [ "Jason", "Bob" ],
    messages: [ 
        { sender:"Jason", content:"Hello"},
        { sender:"Bob", content:"Hi"},
        { sender:"Jason", content:"午餐要吃什麼"},
        { sender:"Jason", content:"吃義大利麵!?"},
        { sender:"Bob", content:"走阿"}
    ]
},
{_id:"4-2_2", members:[ "Jason", "Mary" ], messages:[]},
{_id:"4-2_3", members:[ "Bob", "Mary" ], messages:[]}
]);

Update

db.collection.update()

db.library.update(
  {book:"實用英文會話"},{$set:{book:"實用英文會話V2"}}
)

Delete

db.collection.remove()

db.library.remove(
   {book:"實用英文會話"}
)

Query

只能從單一一個 Collection 找出符合條件的 Document 透過 db.collection.find(query, projection) 方法達成

db.library.find({book:"實用英文會話"},{book:true, price:true})

結果顯示 Query Selector 提供類似 SQL 敘述裡面 where 子句的各種運算,方便撰寫查詢條件

db.library.find({$and:[{book:"七天學會大數據資料庫處理-NoSQL:MongoDB入門與活用"},{price:{$gt:200}}]});

結果顯示

db.library.find({"borrower.name":"王小明"});

相關運算子:$elemMatch,查詢某個陣列的內部元素符合條件式。

db.chatroom.find({messages:{$elemMatch:{content:"Hello"}}})

結果顯示

$in:查詢某個陣列存在著某個值 { field: { $in: [, , ... ] } }

db.library.find({authors:{$in:["Jason","Mary"]}});

results matching ""

    No results matching ""