1. 程式人生 > >我的MongoDB-基礎筆記

我的MongoDB-基礎筆記

MongoDB 基礎知識總結

mongoDB 知識點小結


1.ObjectId 12位 4時間戳+3機器識別嗎+2進程id+3個隨機數

getTimestamp()

str()


2.Map Reduce 將大批量的工作分解執行,然後將結果合並成最終的結果。


3.MongoDB全文檢索


創建索引:db.posts.ensureIndex({post_text:"text"})

使用全文檢索:db.posts.find({$text:{$search:"runoob"}})

刪除全文索引:

db.posts.getIndexes()

db.posts.dropIndex("post_text_text")


4.可以使用正則

使用正則查詢的三種方式:

db.posts.find({post_text:{$regex:"runoob"}})

db.posts.find({post_text:/runoob/})

title:eval("/"+title+"/i") // 等同於 title:{$regex:title,$Option:"$i"}


5.固定大小的集合

特點:1>插入速度極快 2>按照插入順序的查詢輸出極快 3>能在插入最新數據時,淘汰最早的數據

用法:1>存儲日誌信息 2>緩存少量文檔

創建:db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000}) 大小固定 文檔個數固定

判斷:db.cappedLogCollection.isCapped()

轉換:db.runCommand({"convertToCapped":"posts",size:10000})

查詢:db.cappedLogCollection.find().sort({$natural:-1})


6.自增

MongoDB沒有實現,可以變成實現這個功能

該函數實現了key的自增

function getNextSequenceValue(sequenceName){

var sequenceDocument = db.counters.findAndModify(

{

query:{_id: sequenceName },

update: {$inc:{sequence_value:1}},

"new":true

});

return sequenceDocument.sequence_value;

}


7.GridFS

存儲超出16M的文件

files 文件的信息描述

chunk 文件的拆分體 256k/個



8.MongoDb關系 1:1 1:N N:1 N:N

1對多:引入式關系 嵌入式關系


9.數據庫的引用

{

$ref:集合名稱

$id:引用的id

$db:數據庫名稱,可選參數

}

使用:

>var user = db.users.findOne({"name":"Tom Benzamin"})

>var dbRef = user.address

>db[dbRef.$ref].findOne({"_id":(dbRef.$id)})



10.覆蓋索引的使用

db.users.ensureIndex({gender:1,user_name:1})

db.users.find({gender:"M"},{user_name:1,_id:0}) 正確

db.users.find({gender:"M"},{user_name:1})。 錯誤



11.查詢分析

hint()和explain()



12.MongoDB原子操作

不支持事物,但支持一些原子的操作

。。。例如:$set $unset $inc $push $pushAll $pull $addToSet $rename $bit



13.MonogoDB索引的使用

創建索引:db.users.ensureIndex({"tags":1})

使用索引:db.users.find({tags:"cricket"})

驗證使用:db.users.find({tags:"cricket"}).explain()

索引子文檔字段:

創建索引:db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

索引使用:db.users.find({"address.city":"Los Angeles"})

索引目的:方便讀取,缺點額外的內存開銷,2.6增加了對索引字段值的長度限制。



14.基礎

MongoDB安裝和連接略



創建數據庫:use runoob

查看所有數據庫:show dbs

插入數據:db.runoob.insert({"name":"菜鳥教程"})

刪除當前數據庫:db.dropDatabase()



刪除集合:db.collection.drop()

創建集合:db.creteCollection(name,{ capped : true, autoIndexId : true, size : 6142800, max : 10000 })

capped:是否固定

autoIndexId:是否以_id創建索引

size:集合最大值

max:集合中包含文檔最大數量



插入文檔:db.col.insert(document)

更新文檔:

db.collection.update(

<query>,

<update>,

{

upsert: <boolean>,

multi: <boolean>,

writeConcern: <document>

}

)

刪除文檔:

db.collection.remove(

<query>,

<justOne>

)

查詢文檔:db.col.find().pretty()


操作符介紹:

條件操作符:><>=<=...

$type:數據類型和數字對應

limit和skip $gt優化

sort()

aggregate聚合操作...



管道:當前命令的輸出結果作為下一個命令的參數


MongoDB復制:副本會接管主節點成為主節點,不會出現宕機的情況

分片。。。。


MongoDB Java和Node.js中的使用。。。。










我的MongoDB-基礎筆記