標籤: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-基礎筆記