關(guān)于mongodb,有幾個(gè)大的特點(diǎn):
1,用mongo shell的話,它的語法類似于Linux中的命令
2,mongodb中的函數(shù)參數(shù),返回結(jié)果基本上用 JSON表示,所以要用JSON的思維來學(xué)習(xí)mongodb
============關(guān)于引用
Mongodb不支持Join操作,代替的方式是引用,
===方式一,手工引用,如下:
就是一個(gè)document中的字段值為另一個(gè)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 是引用的數(shù)據(jù)名
==================ObjectId
12自己的BSON類型,組成如下:
4 byte timestamp; 3 byte machine identifier; 2 byte process id, 3 byte counter.
mongodb默認(rèn)用它做主鍵,好處如下:
1)能得到這個(gè)_id的創(chuàng)建時(shí)間,通過getTimestamp()方法可以得到
2)通過_id和創(chuàng)建時(shí)間排序的效果一樣。
===ObjectId()
這個(gè) mongo shell 提供的包裝類,它能產(chǎn)生一個(gè)新的ObjectId,屬性和方法如下:
1 str 該_id的值,不過是用16進(jìn)制字符串表示的。
2 getTimestamp() 返回ObjectId() 對象的創(chuàng)建時(shí)間,返回類型是Date
3 toString() [V2.2及以后] ObjectId對象的字符串表示,格式如下: ObjectId(...)
4 valueOf() [V2.2及以后] 和str屬性的值相同
打開命令行工具,連接到mongodb,然后輸入如下命令:
x=ObjectId() 顯示結(jié)果如下:

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

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

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

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

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