1. 程式人生 > >MongoDB基本操作例項

MongoDB基本操作例項

// 顯示所有資料庫
show dbs
// 切換至'mydb'資料庫
use mydb    
// 刪除當前資料庫
db.dropDatabase()
// 顯示當前資料庫中所有集合
show collections
// 查詢'myCollection'集合中所有資料
db.myCollection.find()

// 查詢'myCollection'集合中所有資料並格式化輸出
db.myCollection.find().pretty()

// 查詢'myCollection'集合中所有含有 x: 1 的文件(記錄)
db.myCollection.find({x: 1})

// 查詢'myCollection'集合中所有記錄 => 以 x 升序(1升序0降序)排列 => 第 4(濾去前3條)到 6(4+2)條文件(記錄)
db.myCollection.find().skip(3).limit(2).sort({x:1}) // 查詢'myCollection'集合中總文件(記錄)數 db.myCollection.find().count() // 查詢存在欄位 x 的文件(記錄) db.myCollection.find({x: {$exists: true}})
// 向'myCollection'集合插入資料 x: 1,y: 2
db.myCollection.insert({x:1, y: 2})

// 向'myCollection'集合插入資料 x: 1,並自定義編號為 10086(不可重複)
db.myCollection.insert({x:1
, _id: 10086}) // 向'myCollection'集合連續插入10條記錄 for(var i = 0; i < 10; i++) { db.myCollection.insert({x: i}) }
/**
* 將'myCollection'集合中 x: 1 的文件(記錄)更新為 x: 999
* 注意:
* 1. 此方法只更新找到的第一條文件(記錄)
* 2. 此方法更新後文檔(記錄)中只剩下 x: 999 ;其他鍵值對(欄位)會被覆蓋
**/
db.myCollection.update({x: 1}, {x: 999})

// 只更新 x 欄位(不覆蓋文件(記錄)中其他欄位)
db.myCollection.update({x: 1}, { $set: {x: 999} }) // 將'myCollection'集合中 x: 1 的文件(記錄)更新為 x: 999; 若 x: 1 的文件(記錄)不存在,則插入 db.myCollection.update({x: 1}, {x: 999}, true) // 將'myCollection'集合中 所有 x: 1 的文件(記錄)更新為 x: 999 db.myCollection.update({x: 1}, {$set:{x: 999}}, false, true)
// 刪除集合中的所有資料
db.myCollection.remove({})

// 刪除集合中所有 x: 1 的文件(記錄)
db.myCollection.remove({x: 1})
// 刪除'myCollection'集合
db.myCollection.drop()
//查詢'myCollection'集合中所有索引
db.myCollection.getIndexes()
//在'myCollection'集合中按 x 正向(1正向,-1逆向)排序建立索引
db.myCollection.createIndex({x: 1})

//在'myCollection'集合中按 x 正向排序,y 逆向排序建立複合索引
db.myCollection.createIndex({x: 1, y: -1})

//在'myCollection'集合中建立索引並自定義索引名稱'indexName'
db.myCollection.createIndex({x: 1}, {name:'indexName'})
'myCollection'集合中建立 唯一索引 x: 1。即只能存在一條文件(記錄)包含 x: 1
db.myCollection.createIndex({x: 1}, {unique: true})
/**
* 在'myCollection'集合中建立 過期索引(TTL) ,插入的資料會在30s後自動刪除
* 注意:
* 1. 儲存在過期索引欄位(此處為time)的值必須是isoDate或isoDate陣列,若文件無此欄位則不會刪除
* 2. isoDate陣列中按最早的時間刪除
* 3. 刪除機制預設情況下60s執行一次,因此實際刪除時間會存在偏差
**/
db.myCollection.createIndex({time: 1}, {expireAfterSeconds:30})
// 在'myCollection'集合中建立 全文索引
db.myCollection.createIndex({article: 'text'})

// 搜尋多個欄位
db.myCollection.createIndex({article: 'text', title: 'text'})

// 對整個文件建立 全文索引(搜尋所有欄位)
db.myCollection.createIndex({'$**': 'text'})

/**
* 使用全文索引查詢
* 注意: 每個集合只能建立一個全文索引
**/
db.myCollection.find({$text: {$search: 'apple'} })

// 使用全文索引查詢多個關鍵詞('或'查詢)
db.myCollection.find({$text: {$search: 'apple water'} })

// 使用全文索引查詢多個關鍵詞('與'查詢)
db.myCollection.find({$text: {$search: ' \'apple\' \'water\' '} })


// 使用全文索引查詢包含 apple 而不包含 water
db.myCollection.find({$text: {$search: 'apple -water'} })

// 使用全文索引查詢包含 apple 的文件並按顯示相似度排序
db.myCollection.find({$text: {$search: 'apple'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
// 刪除所有索引
db.myCollection.dropIndexes()

// 刪除名為'indexName'的索引
db.myCollection.dropIndex('indexName')