博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB的使用
阅读量:6293 次
发布时间:2019-06-22

本文共 4130 字,大约阅读时间需要 13 分钟。

MongoDB的使用

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

MongoDB的特点:

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

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

1. MongoDB的安装

官网示意图

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

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

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

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

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

2. MongoDB的增删改查

2.1 MongoDB的组织结构

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

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

2.2 启动MongoDB

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

配置文件内容如下:

localhost:incentiveblog yk$ cat /usr/local/etc/mongod.confsystemLog:  destination: file  path: /usr/local/var/log/mongodb/mongo.log  logAppend: truestorage:  dbPath: /usr/local/var/mongodbnet:  bindIp: 127.0.0.1
  • 客户端连接

输入mongo就连接了

localhost:incentiveblog yk$ mongoMongoDB shell version v3.6.4connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.6.4Server has startup warnings: 2019-01-18T11:29:05.899+0800 I CONTROL  [initandlisten] 2019-01-18T11:29:05.899+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.2019-01-18T11:29:05.899+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.2019-01-18T11:29:05.899+0800 I CONTROL  [initandlisten] 2019-01-18T11:29:05.899+0800 I CONTROL  [initandlisten] 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>

2.3 文档的增删改查

  • 新增文档

语法:

db.COLLECTION.insert(JSON)

举例

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

语法:

db.COLLECTTION.find(COND_JSON,SHOW_JSON)

示例:

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

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

语法:

db.COLLECTION.update(COND_JSON,UPDATE_JSON)

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

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

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

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

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

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

实验证明,这样ok!

  • 删除文档

语法:

db.COLLECTION.remove(COND_JSON)

示例:删除年龄是30的人

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

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

image

转载于:https://www.cnblogs.com/tokenpai/p/10319091.html

你可能感兴趣的文章
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>