關于mongodb,有幾個大的特點:
1,用mongo shell的話,它的語法類似于Linux中的命令
2,mongodb中的函數參數,返回結果基本上用 JSON表示,所以要用JSON的思維來學習mongodb
============關于引用
Mongodb不支持Join操作,代替的方式是引用,
===方式一,手工引用,如下:
就是一個document中的字段值為另一個document的_id,例子:
original_id=ObjectId()
db.places.insert(
{
"_id":original_id,
"name":"H.K",
"url":"aa.bb.cc.aspx"
}
)
db.people.insert(
{
"name":"jonh",
"place_id":original_id,
"url":"aa.bb.cc.aspx/test"
}
)
===方式二:DBRef引用,方式如下:
{$ref::<value>,$id::<value>,$db:<value>}
其中:
$ref 是引用的collection的名字
$id 是引用的document的_id
$db 是引用的數據名
==================ObjectId
12自己的BSON類型,組成如下:
4 byte timestamp; 3 byte machine identifier; 2 byte process id, 3 byte counter.
mongodb默認用它做主鍵,好處如下:
1)能得到這個_id的創建時間,通過getTimestamp()方法可以得到
2)通過_id和創建時間排序的效果一樣。
===ObjectId()
這個 mongo shell 提供的包裝類,它能產生一個新的ObjectId,屬性和方法如下:
1 str 該_id的值,不過是用16進制字符串表示的。
2 getTimestamp() 返回ObjectId() 對象的創建時間,返回類型是Date
3 toString() [V2.2及以后] ObjectId對象的字符串表示,格式如下: ObjectId(...)
4 valueOf() [V2.2及以后] 和str屬性的值相同
打開命令行工具,連接到mongodb,然后輸入如下命令:
x=ObjectId() 顯示結果如下:

==返回ObjectId()的時間戳,如下:

==返回ObjectId()的字符串,如下:

==返回ObjectId()的值,如下:

==========Capped Collection
可覆蓋的Collection:超過指定的空間大小后會覆蓋最開始的數據,周而復始。
它的特定:1)插入的順序就是它在磁盤上的順序。2)更新時如果讓document變大了,那么會更新失敗。
3)不能刪除Capped Document的數據,如果要刪除所有數據,可以使用 emptycapped 命令
比較適合:1,可循環的日志,比如規定500M大小的日志,超過500M后會刪除最開始的日志,用現在的日志去記錄。
2,Cache,不說了,你懂的。
===創建 Capped Collection
必須顯式使用命令 createCollection()來創建;在創建時必須指定一個固定大小(以字節為單位),例子:
db.createCollection("mycoll",{capped:true,size:10000})
==查詢命令:
db.cappedCollection.find().sort($natural:-1) //表示按照插入順序的反序排列結果(默認按查詢順序排列結果)
==檢查一個collection是否是capped的:
db.collection.isCapped()
==將一個collection轉為capped的:
db.runCommand({"convertToCapped":"mycoll",size:10000})
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
