本文共 5364 字,大约阅读时间需要 17 分钟。
目录
本文原文连接: 转载请注明出处!
3.0 正式版本发布!这标志着 MongoDB 进入了一个全新的发展阶段,提供强大、灵活而且易于管理的数据库管理系统。MongoDB宣称,3.0新版本不只提升7到10倍的写入效率以及增加80%的数据压缩率,还能减少95%的运维成本。
MongoDB 3.0主要新特性包括: ·可插入式的存储引擎 API ·支持 WiredTiger 存储引擎 ·MMAPv1 提升 ·复制集全面提升 ·集群方面的改进 ·提升了安全性 ·工具的提升 WiredTiger 存储引擎是一项难以置信的技术实现,提供无门闩、非堵塞来利用先进的硬件平台(如大容量芯片缓存和线程化)来提升性能。通过 WiredTiger,MongoDB 3.0 实现了文档级别的并发控制,因此大幅提升了大并发下的写负载。MongoDB 提供了centos yum安装方式。
参考: pdf 手册:vi /etc/yum.repos.d/mongodb-org-3.0.repo
[mongodb-org-3.0]name=MongoDB Repositorybaseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ gpgcheck=0 enabled=1
安装mongodb
yum install -y mongodb-org
安装了所有相关服务。
......Running transaction Installing : mongodb-org-shell-3.0.2-1.el7.x86_64 1/5 Installing : mongodb-org-tools-3.0.2-1.el7.x86_64 2/5 Installing : mongodb-org-mongos-3.0.2-1.el7.x86_64 3/5 Installing : mongodb-org-server-3.0.2-1.el7.x86_64 4/5 Installing : mongodb-org-3.0.2-1.el7.x86_64 5/5 Verifying : mongodb-org-3.0.2-1.el7.x86_64 1/5 Verifying : mongodb-org-server-3.0.2-1.el7.x86_64 2/5 Verifying : mongodb-org-mongos-3.0.2-1.el7.x86_64 3/5 Verifying : mongodb-org-tools-3.0.2-1.el7.x86_64 4/5 Verifying : mongodb-org-shell-3.0.2-1.el7.x86_64 5/5
配置文件在:/etc/mongod.conf
数据文件在:/var/lib/mongo 日志文件在:/var/log/mongodb mongodb服务使用#启动service mongod start#停止service mongod stop#重启service mongod restart#增加开机启动chkconfig mongod on
参考:
连接到MongoDB,很简单,执行mongo就可以了。
# mongoMongoDB shell version: 3.0.2 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2015-04-29T18:03:17.544+0800 I STORAGE [initandlisten] 2015-04-29T18:03:17.544+0800 I STORAGE [initandlisten] ** WARNING: Readahead for /var/lib/mongo is set to 4096KB 2015-04-29T18:03:17.544+0800 I STORAGE [initandlisten] ** We suggest setting it to 256KB (512 sectors) or less 2015-04-29T18:03:17.544+0800 I STORAGE [initandlisten] ** http://dochub.mongodb.org/core/readahead 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files. 2015-04-29T18:03:17.679+0800 I CONTROL [initandlisten] >
> db.users.insert(... {... name:"zhang san",... age:26, ... city:"bei jing" ... } ... ) WriteResult({ "nInserted" : 1 }) > db.users.insert( ... { ... _id:1, ... name:"zhang san", ... age:26, ... city:"bei jing" ... } ... ) WriteResult({ "nInserted" : 1 }) > db.users.insert( ... { ... _id:1, ... name:"zhang san", ... age:26, ... city:"bei jing" ... } ... ) WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "E11000 duplicate key error index: test.users.$_id_ dup key: { : 1.0 }" } }) > db.users.insert( ... { ... _id:2, ... name:"li si", ... age:28, ... city:"shang hai" ... } ... ) WriteResult({ "nInserted" : 1 })
数据可以没有主键_id,如果没有,会自动生成一个。如果设置了_id主键,就必须不重复。
否则报主键冲突:“E11000 duplicate key error index: test.users.$_id_ dup key: { : 1.0 }”> db.users.update(... {_id:2},... {... $set: {... city:"guang zhou" ... } ... } ... ) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.update( ... {_id:3}, ... { ... $set: { ... city:"si chuan" ... } ... }, ... { upsert: true } ... ) WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 3 })
更新使用update,如果增加{ upsert: true },则表示没有查询到数据直接插入。
> db.users.remove({_id:3})WriteResult({ "nRemoved" : 1 }) > db.users.remove({_id:4}) WriteResult({ "nRemoved" : 0 })
查询到数据才进行删除,并且返回删除数量。
> db.users.find({age:{ $gt: 26}}){ "_id" : 2, "name" : "li si", "age" : 28, "city" : "guang zhou" } > db.users.find({age:{ $gt: 25}}) { "_id" : ObjectId("5540adf29b0f52a6786de216"), "name" : "zhang san", "age" : 26, "city" : "bei jing" } { "_id" : 1, "name" : "zhang san", "age" : 26, "city" : "bei jing" } { "_id" : 2, "name" : "li si", "age" : 28, "city" : "guang zhou" } #查询全部数据 > db.users.find() { "_id" : ObjectId("5540adf29b0f52a6786de216"), "name" : "zhang san", "age" : 26, "city" : "bei jing" } { "_id" : 1, "name" : "zhang san", "age" : 26, "city" : "bei jing" } { "_id" : 2, "name" : "li si", "age" : 28, "city" : "guang zhou" }
使用可视化工具,方便使用MongoDB管理。
首先要修改下端口和ip vi /etc/mongod.confport=27017dbpath=/var/lib/mongo# location of pidfilepidfilepath=/var/run/mongodb/mongod.pid# Listen to local interface only. Comment out to listen on all interfaces. bind_ip=192.168.1.36
然后重启MongoDB
service mongod restart
接下来就可以创建一个mongodb连接:
连接成功之后效果:本文原文连接: 转载请注明出处!
MongoDB 3.0操作起来还是很方便的。能高效的使用。
同时MongoDB扩展也很方便。接下来研究。 对应互联网业务来说没有复杂的join查询。只追求高效,快速访问。