随笔分类 -  MongoDB

MongoDB 深入
摘要:1.MongoDB shellmongo其实是数据库shell.一般假定它和mongod运行在同一台机器上,还假定了mongod绑定了默认端口.如果不是这样的话,可以在启动时指定这些参数,让shell连接另一台服务器:mongo 192.168.10.10:10000这样就会连接运行在192.168.10.10上端口为10000的mongodshell默认连接test数据库,要使用别的数据库,在服务器地址后添加斜杠和数据库名:mongo 192.168.10.10:10000/refactor这样会连接192.168.10.10:10000上的refactor数据库也可以用--nodb选项启动 阅读全文

posted @ 2012-08-15 10:04 refactor 阅读(4162) 评论(1) 推荐(1)

MongoDB 分片
摘要:分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用.1.分片简介分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能强大的大型计算机就可以存储更多的数据,处理更大的负载.使用几乎所有数据库软件都能进行手动分片,应用需要维护与若干不同数据库服务器的连接,每个连接还是完全独立的.应用程序管理不同服务器上的不同数据,存储查村都需要在正确的服务器上进行.这种方法可以很好的工作,但是也难以维护,比如向集群添加节点或从集群删除节点都很困难,调整数据分布和负载模式也不轻松.MongoDB支持自动分片,可以摆脱手动 阅读全文

posted @ 2012-08-14 10:01 refactor 阅读(8122) 评论(2) 推荐(0)

MongoDB 复制
摘要:1.主从复制主从复制是MongoDB最常用的复制方式,这种方式很灵活.可用于备份,故障恢复,读扩展等.最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址.运行mongod --master就启动了主服务器,运行mongod --slave --source master_address就启动了从服务器.其中master_address是主节点的地址.生产环境下会有多台服务器的,这里用一台机器来测试.首先给主节点建立数据目录:mongod --dbpath "F:\mongo\dbs\master" --port 10000 --master- 阅读全文

posted @ 2012-08-13 10:08 refactor 阅读(8619) 评论(0) 推荐(3)

MongoDB 管理
摘要:1.启动和停止MongoDB执行mongod,启动MongoDB服务器。mongod有很多选项,在命令中执行 mongod --help主要选项如下:--dbpath指定数据目录,默认值是C:\data\db。每个mongod进程都需要独立的数据目录。如果要是有3个mongod实例,那么必须有3个独立的数据目录。当mongod启动时,会在数据库目录中创建mongod.lock文件这个文件用于防止其他的mongod纯净使用该数据目录。--port指定服务器监听的端口号,默认端口27017.要运行多个mongod进程,则要给每个指定不同的端口号。--logpath指定日志的输出路径。如果对文件夹有 阅读全文

posted @ 2012-08-10 09:52 refactor 阅读(6691) 评论(0) 推荐(1)

MongoDB 进阶
摘要:1.数据库命令a.命令的工作原理drop命令,在shell中删除一个集合,执行db.refactor.drop().其实这个函数实际运行的是drop命令,可以用runCommand来达到一样的效果:db.runCommand({"drop":"refactor"}){ "nIndexesWas" : 1, "msg" : "indexes dropped for collection", "ns" : "test.refactor", "ok&q 阅读全文

posted @ 2012-08-09 09:18 refactor 阅读(7624) 评论(0) 推荐(1)

MongoDB 聚合
摘要:MongoDB除了基本的查询功能,还提供了很多强大的聚合工具,其中简单的可计算集合中的文档个数,复杂的可利用MapReduce做复杂数据分析.1.countcount返回集合中的文档数量db.refactor.count()不管集合有多大,都能很快的返回文档数量.可以传递查询,MongoDB会计算查询结果的数量db.refactor.count({"username":"refactor"})但是增加查询条件会使count变慢.2.distinctdistinct用来找出给定键的所有不同值.使用时必须指定集合和键.如:db.runCommand({&qu 阅读全文

posted @ 2012-08-06 10:05 refactor 阅读(10193) 评论(1) 推荐(6)

MongoDB 索引
摘要:索引是用来加快查询的,数据库索引与数据的索引类似,有了索引就不需要翻遍整本书,数据库可以直接在索引中查找,使得查询速度很快,在索引中找到条目后,就可以直接跳转到目标文档的位置.1.索引简介要掌握如何为查询配置最佳索引会有些难度.MongoDB索引几乎和关系型数据库的索引一样.绝大数优化关系型数据库索引的技巧同样适用于MongoDB.如:db.refactor.insert({"username":"refactor","age":24,"isactive":true})db.refactor.insert({&qu 阅读全文

posted @ 2012-08-01 09:39 refactor 阅读(7995) 评论(1) 推荐(0)

MongoDB 查询下
摘要:1.查询内嵌文档有两种方法查询内嵌文档:查询整个文档,或者只针对其键值对进行查询查询整个内嵌文档与普通查询相同如:db.users.insert( { "name": { "first":"refactor", "last":"refactor2" }, "age":24 })查找姓名为refactor的文档db.users.find({"name":{"first":"refactor","last&qu 阅读全文

posted @ 2012-07-31 13:57 refactor 阅读(5033) 评论(2) 推荐(2)

MongoDB 查询上
摘要:1.findMongoDB使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.find的第一个参数决定了要返回哪些文档.其形式也是一个文档,说明要查询的细节.空的查询文档{}会匹配集合的全部内容.要是不指定查询文档,默认是{}.如:db.users.find()返回集合users中的所有内容.向查询文档中添加键值对,就意味着添加了查询条件.对绝大多数类型来说,整数匹配整数,布尔类型匹配布尔类型,字符串匹配字符串.2.指定返回的键有时并不需要返回文档中的所有键值对返回.可以通过find或findOne的第二个参数来指定要返回的键.这样做能节省传输的数据量, 阅读全文

posted @ 2012-07-30 09:23 refactor 阅读(37943) 评论(4) 推荐(2)

MongoDB 创建,更新,删除文档 下
摘要:1.数组的定位修改器若数组有多个值,只想对其中一部分进行修改.可以通过位置或定位操作符.如将上篇的email数组的第一个值"295240648@163.com"修改为"295240648@136.com"db.users.update( {"userName":"refactor"}, { "$set": { "emails.0":"295240648@136.com" } })很多情况下,不预查询就不知道要修改数组的下标.MongoDB提供了定位操作符& 阅读全文

posted @ 2012-07-27 10:08 refactor 阅读(2614) 评论(2) 推荐(0)

MongoDB 创建,更新,删除文档 上
摘要:创建文档向MongoDB插入数据,使用insert,如:db.refactor.insert({"refactor's blog":"http://www.cnblogs.com/refactor"})这个操作会给 文档 增加 一个"_id",键,并保存在数据库中。批量插入如果要插入多个文档,使用批量插入会快一些,批量化插入能传入一个有文档构成的数据给数据库一次批量插入只是单个的TCP请求,避免了许多零碎的请求带来的开销.由于无需处理大量的消息头,这样能减少插入时间.每当单个文档发送致数据库时,会有一个头部信息,告诉数据库对指 阅读全文

posted @ 2012-07-26 09:35 refactor 阅读(3942) 评论(2) 推荐(2)

MongoDB入门下
摘要:1.使用shell的技巧shell内置的帮助:使用db.help()可以查看数据库级别的命令帮助,集合的相关帮助可以通过db.blog.help()输入的时候不要输入括号,这样就可以显示该函数的javascript源代码:使用db.集合名 的方式来访问集合一般不会有问题,但如果集合名恰好是数据库类的一个属性,这样会有问题,例如:要访问version这个集合,使用db.version是不行的,因为db.version是个数据库函数.当javascript只有在db中找不到指定的属性时,才会将其作为集合返回.当有属性与目标集合同名时,可以使用getCollection函数,如:db.getColl 阅读全文

posted @ 2012-07-25 09:19 refactor 阅读(5517) 评论(3) 推荐(2)

MongoDB入门上
摘要:MongoDB基本概念1.文档是MongoDB中数据的基本单元,类似于关系型数据库的行(但比行复杂的多)2.集合可以看成没有模式的表3.MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限4.MongoDB自带简洁但功能强大的javascript shell,这个工具对于管理MongoDB实例和操作数据非常有用5.每一个文档都有一个特殊的键"_id",它在文档所处的集合中是唯一的.详细介绍:a)文档文档是MongoDB的核心概念.多个键及其关联的值有序的放置在一起便是文档.大多数语言都有想通的一种数据结构,比如:映射,散列或字典.在javascrip 阅读全文

posted @ 2012-07-24 10:07 refactor 阅读(7211) 评论(10) 推荐(1)

MongoDB简介
摘要:MongoDB是一种强大,灵活,可扩展的数据存储方式.它扩展了关系型数据库的众多有用功能,如辅助索引,范围查询和排序.MongoDB的功能非常丰富,比如:内置的对MapReduce式聚合的支持,以及对地理空间索引的支持.1.1丰富的数据模型MongoDB是面向文档的数据库,不是关系型数据库.放弃关系模型的主要原因就是为了获得更加方便的扩展性,还有其他的好处.基本思路就是将原来"行"(row)的观念转化为更加灵活的"文档"(document)模型.面向文档的方式可以将文档或者数组内嵌进来,所以可以用一条记录表示非常复杂的层次关系.MongoDB没有模式:文 阅读全文

posted @ 2012-07-23 10:34 refactor 阅读(1891) 评论(3) 推荐(0)

导航