经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MongoDB » 查看文章
MongoDB的使用
来源:cnblogs  作者:通证派大本营  时间:2019/1/28 9:32:04  对本文有异议

MongoDB的使用




??MongoDB是一个基于分布式文件存储的数据库,使用C++编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB本身属于非关系型数据库,但是它又是非关系型中最像关系型的。

MongoDB的特点:

  • 高性能
  • 易使用
  • 易部署
  • 模式自由
  • 动态查询(支持js)
  • BSON数据存储
  • 复制和数据恢复
  • 索引,分片都支持

MongoDB公司原名是10gen公司,后来更名为MongoDB公司,典型的产品比公司名气大。名字来源于Humongous,目标在于处理海量的数据。

1. MongoDB的安装

官网下载

官网示意图
下载后,进行解压缩就可以直接获得可执行文件进行使用!重点关注2个文件:

  • mongod 服务器启动程序
  • mongo 客户端启动程序

对于类unix平台来说,可以使用命令直接安装,相对很方便!

  • for mac os
  1. brew install mongodb
  • for ubuntu
  1. sudo apt-get install mongodb

如果是类unix平台,推荐使用命令行安装,执行文件默认在系统可执行路径下!

2. MongoDB的增删改查

2.1 MongoDB的组织结构

MongoDB默认没有用户验证机制,使用mongo可以直接登陆,我们可以认为MongoDB的组织结构是三层!

库 - 集合(表) - 文档(记录)

2.2 启动MongoDB

  • 服务器启动
  1. /usr/local/bin/mongod -f /usr/local/etc/mongod.conf &

配置文件内容如下:

  1. localhost:incentiveblog yk$ cat /usr/local/etc/mongod.conf
  2. systemLog:
  3. destination: file
  4. path: /usr/local/var/log/mongodb/mongo.log
  5. logAppend: true
  6. storage:
  7. dbPath: /usr/local/var/mongodb
  8. net:
  9. bindIp: 127.0.0.1
  • 客户端连接

输入mongo就连接了

  1. localhost:incentiveblog yk$ mongo
  2. MongoDB shell version v3.6.4
  3. connecting to: mongodb://127.0.0.1:27017
  4. MongoDB server version: 3.6.4
  5. Server has startup warnings:
  6. 2019-01-18T11:29:05.899+0800 I CONTROL [initandlisten]
  7. 2019-01-18T11:29:05.899+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
  8. 2019-01-18T11:29:05.899+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
  9. 2019-01-18T11:29:05.899+0800 I CONTROL [initandlisten]
  10. 2019-01-18T11:29:05.899+0800 I CONTROL [initandlisten]
  11. 2019-01-18T11:29:05.899+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
  12. >

2.3 文档的增删改查

  • 新增文档

语法:

  1. db.COLLECTION.insert(JSON)

举例

  1. > db.person.insert({name:"yekai",age:24,sex:"man"})
  2. WriteResult({ "nInserted" : 1 })
  3. > db.person.insert({name:"fuhongxue",age:"23",sex:"man"})
  4. WriteResult({ "nInserted" : 1 })
  5. > db.person.insert({name:"luxiaojia",age:22,sex:"man",info:{like:"huasheng",wuqi:"jian"}})
  6. WriteResult({ "nInserted" : 1 })
  • 查询文档

语法:

  1. db.COLLECTTION.find(COND_JSON,SHOW_JSON)

示例:

  1. > db.person.find()
  2. { "_id" : ObjectId("5c414aa9466f6a72a6e5196c"), "name" : "yekai", "age" : 24, "sex" : "man" }
  3. { "_id" : ObjectId("5c414aa9466f6a72a6e5196d"), "name" : "fuhongxue", "age" : "23", "sex" : "man" }
  4. { "_id" : ObjectId("5c414aab466f6a72a6e5196e"), "name" : "luxiaojia", "age" : 22, "sex" : "man", "info" : { "like" : "huasheng", "wuqi" : "jian" } }
  1. > db.person.find({name:"yekai"})
  2. { "_id" : ObjectId("5c414aa9466f6a72a6e5196c"), "name" : "yekai", "age" : 24, "sex" : "man" }
  3. > db.person.find({name:"yekai"},{_id:0})
  4. { "name" : "yekai", "age" : 24, "sex" : "man" }
  • 修改文档

类比关系型语法:update tablename set col= val where cond;
语法:

  1. db.COLLECTION.update(COND_JSON,UPDATE_JSON)

示例1,想把yekai的年龄修改为30

  1. > db.person.update({name:"yekai"},{age:30})
  2. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

修改后yekai消失了,结论后面的json要写全部信息。

  1. > db.person.update({name:"yekai"},{age:30})
  2. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  3. > db.person.find()
  4. { "_id" : ObjectId("5c414aa9466f6a72a6e5196c"), "age" : 30 }
  5. { "_id" : ObjectId("5c414aa9466f6a72a6e5196d"), "name" : "fuhongxue", "age" : "23", "sex" : "man" }
  6. { "_id" : ObjectId("5c414aab466f6a72a6e5196e"), "name" : "luxiaojia", "age" : 22, "sex" : "man", "info" : { "like" : "huasheng", "wuqi" : "jian" } }

示例2,也可以使用$set操作符,进行精确修改

  1. > db.person.update({name:"fuhongxue"},{$set:{age:30}})
  2. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  3. > db.person.find()
  4. { "_id" : ObjectId("5c414aa9466f6a72a6e5196c"), "age" : 30 }
  5. { "_id" : ObjectId("5c414aa9466f6a72a6e5196d"), "name" : "fuhongxue", "age" : 30, "sex" : "man" }
  6. { "_id" : ObjectId("5c414aab466f6a72a6e5196e"), "name" : "luxiaojia", "age" : 22, "sex" : "man", "info" : { "like" : "huasheng", "wuqi" : "jian" } }

实验证明,这样ok!

  • 删除文档

语法:

  1. db.COLLECTION.remove(COND_JSON)

示例:删除年龄是30的人

  1. > db.person.remove({age:30})
  2. WriteResult({ "nRemoved" : 2 })
  3. > db.person.find()
  4. { "_id" : ObjectId("5c414aab466f6a72a6e5196e"), "name" : "luxiaojia", "age" : 22, "sex" : "man", "info" : { "like" : "huasheng", "wuqi" : "jian" } }

总结:MongoDB对json非常依赖,我们只是简单的介绍了几个例子,有些更复杂的写法留给读者自学。



image

原文链接:http://www.cnblogs.com/tokenpai/p/10319091.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号