MongoDB介绍──开发者专区(4)

2.4  mongo──交互式shell

mongo类似于MySQL中的mysql进程,但功能远比mysql强大,它可以使用JavaScript语法的命令从交互式shell中直接操作数据库。如查看数据库中的内容,使用游标循环查看查询结果,创建索引,更改及删除数据等数据库管理功能。下面是一个在mongo中使用游标的例子:

> for(var cur = db.posts.find(); cur.hasNext();) {   

... print(tojson(cur.next()));

... }

输出:

{

        "_id" : ObjectId("4bb311164a4a1b0d84000000"),

        "date" : "Wed Mar 31 17:05:23 2010",

        "content" : "blablablabla",

        "author" : "navygong",

        "title" : "the first blog"

}

...其它的documents

2.5  一般功能

插入客户端把数据序列化为BSON格式传给DB后被存储在磁盘上,在读取时数据库几乎不做什么改动直接把对象返回给客户端,由client完成unserialized。如:

> doc = {'author': 'joe', 'created': new Date('2010, 3, 28'), 'title':'Yet another blog post', 'text': 'Here is the text...', 'tags': ['example', 'joe'], 'comments': [{'author': 'jim', 'comment': 'I disgree'}, {'author': 'navy', 'comment': 'Good post'}], '_id': 'test_id'}

> db.posts.insert(doc)

查询。基本上你能想到的查询种类MongoDB都支持,如等值匹配,<,<=,>, >=,$ne$in$mod$all$size[1]$exists$type[2],正则表达式匹配,全文搜索,......。还有distinct()sort()count()skip()[3]group()[4]......。这里列表的查询中很多用法都和一般的RDBMS不同,在官网上可以获得全部的查询种类和使用方法。

删除。可以像查询一样指定条件来删除特定的文档。

索引。可以像在一般的RDBMS中一样使用索引。提供了建立(一般、惟一、组合)索引、删除索引、重建索引等各种方法。索引信息保存在集合“system.indexes”中。

map/reduceMongoDB提供了map/reduce方法来进行数据的批处理及聚集操作Hadoop的使用类似,从集合中接收输入,结果输出到另一个集合。如果你需要使用groupmap/reduce会是个不错的选择。但MongoDB中的索引和标准查询不是使用map/reduce,而是与MySQL相似,与CouchDB也不同。

map/reduce通过一个命令调用数据库创建一个临时集合来存放操作的输出当客户端连接关闭或显式地drop时这个集合就被清空。当然也可以指定一个已有的集合来持久存放输出。map/reduce函数以JaveScript语法的方式书写,在server端执行。

 

[1] 匹配一个有size个元素的数组。如db.things.find({a: {$size: 1}})能够匹配文档{a: ["foo"]}

[2] 根据类型匹配。db.things.find({a : {$type : 16}})能够匹配所有aint类型的文档。BSON协议中规定了各种类型对应的枚举值。

[3] 指定跳过多少个文档后开始返回结果,可以用在分页中。如:db.students.find().skip((pageNumber-1)*nPerPage).limit(nPerPage).forEach( function(student) { print(student.name + "<p>"); } )。

[4] sharded MongoDB配置环境中应该应该使用map/reduce来代替group()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值