我的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-基礎筆記