插入文檔:insert() 方法
要插入數據到 MongoDB 集合,需要使用 MongoDB 的 insert() 或 save() 方法。
語法:
insert() 命令的基本語法如下:
>db.COLLECTION_NAME.insert(document)
例子:
>db.mycol.insert({ _id: ObjectId(7df78ad8902c), title: 'MongoDB Overview', description: 'MongoDB is no sql database', by: 'tutorials point', url: 'http://www.jb51.net', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
這裡 mycol 是集合的名稱,如前面的教程中創建。如果集合在數據庫中不存在,那麼MongoDB 將創建此集合,然後把它插入文檔。
插入文檔中,如果我們不指定_id參數,然後MongoDB 本文檔分配一個獨特的ObjectId。
_id 是12個字節的十六進制數,唯一一個集合中的每個文檔。 12個字節被劃分如下:
_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)
要插入單個查詢的多個文檔,可以傳遞一個數組 insert() 命令的文件。
示例:
>db.post.insert([ { title: 'MongoDB Overview', description: 'MongoDB is no sql database', by: 'tutorials point', url: 'http://www.jb51.net', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }, { title: 'NoSQL Database', description: 'NoSQL database doesn't have tables', by: 'tutorials point', url: 'http://www.jb51.net', tags: ['mongodb', 'database', 'NoSQL'], likes: 20, comments: [ { user:'user1', message: 'My first comment', dateCreated: new Date(2013,11,10,2,35), like: 0 } ] } ])
要插入文件,也可以使用 db.post.save(document)。 如果不指定_id在文檔中,然後將其 save() 方法和 insert()方法工作一樣。如果指定_id,它會替換整個數據文件,其中包含_id 指定save()方法。
刪除文檔:remove() 方法
MongoDB的 remove() 方法用於從集合中刪除文檔。remove() 方法接受兩個參數。第一個是刪除criteria ,第二是justOne標志:
(1)deletion criteria :(可選)刪除標准,根據文件將被刪除。
(2)justOne : (可選)如果設置為true或1,然後只刪除一個文件。
語法:
基本語法remove()方法如下
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
例子:
考慮以下數據mycol集合。
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"}
下面的例子將刪除所有的文件,其標題是 'MongoDB Overview'
>db.mycol.remove({'title':'MongoDB Overview'}) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"} >
刪除只有一個。
如果有多個記錄且要刪除的只有第一條記錄,那麼設置remove()方法中justOne參數
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
刪除所有文件:
如果不指定刪除條件,然後MongoDB將從集合中刪除整個文件。這相當於SQL的truncate命令。
>db.mycol.remove() >db.mycol.find() >
查詢文檔:
1.find() 方法
要從MongoDB 查詢集合數據,需要使用MongoDB 的 find() 方法。
語法:
基本的find()方法語法如下
>db.COLLECTION_NAME.find()
find() 方法將在非結構化的方式顯示所有的文件。
2.pretty() 方法
結果顯示在一個格式化的方式,可以使用 pretty() 方法.
語法:
>db.mycol.find().pretty()
例子:
>db.mycol.find().pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "tutorials point", "url": "http://www.jb51.net", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
除了find() 方法外,還有一個 findOne() 法,返回一個文件。
RDBMS Where子句和MongoDB等同語句.
要查詢文件的一些條件的基礎上,可以使用下面的操作
語法:
在 find() 方法,如果通過多個鍵分離',',那麼 MongoDB 處理 AND 條件。AND 基本語法如下所示:
>db.mycol.find({key1:value1, key2:value2}).pretty()
例子
下面給出的例子將顯示所有的教程,標題是“MongoDB Overview“
>db.mycol.find({"by":"tutorials point","title": "MongoDB Overview"}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "yiibai", "url": "http://www.jb51.net", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
對於上面給出的例子相當於where子句 ' where by='yiibai' AND title='MongoDB Overview' , 可以通過任意數量的鍵值對在 find 子句。
4.MongoDB中OR
語法:
OR條件的基礎上要查詢文件,需要使用$or關鍵字。OR 基本語法如下所示:
>db.mycol.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
例子
下面給出的例子將顯示所有的教程,由'yiibai' 所寫或標題是“MongoDB Overview '
>db.mycol.find({$or:[{"by":"yiibai"},{"title": "MongoDB Overview"}]}).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "yiibai", "url": "http://www.jb51.net", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
5.AND 和 OR 一起使用
例子
下面給出的例子將顯示有像的文件大於100,其標題是“MongoDB Overview'或者是'yiibai' 。等效於 SQL where子句 為
'where likes>10 AND (by = 'yiibai' OR title = 'MongoDB Overview')'
>db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai"}, {"title": "MongoDB Overview"}] }).pretty() { "_id": ObjectId(7df78ad8902c), "title": "MongoDB Overview", "description": "MongoDB is no sql database", "by": "yiibai", "url": "http://www.jb51.net", "tags": ["mongodb", "database", "NoSQL"], "likes": "100" } >
更新文檔
MongoDB的 update() 和 save() 方法用於更新文檔的集合。 update()方法更新現有的文檔值,而替換現有的文檔通過的文件中 save() 方法。
1.MongoDB Update() 方法
update()方法更新現有文檔值。
語法:
update() 方法的基本語法如下
>db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)
例子
考慮以下數據mycol集合。
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
下面的例子將設置新標題'MongoDB Overview'的文件,更新其標題是“New MongoDB Tutorial”
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}}) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"} >
MongoDB默認將只更新單一的文件,來更新多個你需要設置參數置'multi' 為true
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
2.MongoDB Save() 方法
save() 方法替換現有的文檔和通過新的文檔 save() 方法
語法
MongoDB 的 save() 方法的基本語法如下:
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
例子
下面的例子將取代文件具有_id為 '5983548781331adf45ec7'
>db.mycol.save( { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai New Topic", "by":"Yiibai" } ) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec5), "title":"Yiibai New Topic", "by":"Yiibai"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"} >