mongodb之开发相关

关于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})
posted @ 2012-11-26 22:01  imap  阅读(223)  评论(0编辑  收藏  举报