初次接触MongoDB

1 篇文章 0 订阅
1 篇文章 0 订阅

什么是MongoDB ?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点:

  • 可以设置任何属性的索引来实现更快的排序
  • 支持丰富得查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  • 支持多语言

MongoDB 下载

mongodb官网下载地址为:https://www.mongodb.com/download-center#community。

MongoDB 应用案例

下面列举一些公司MongoDB的实际应用:

  • Craiglist上使用MongoDB的存档数十亿条记录。
  • FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
  • Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
  • bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
  • spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
  • Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
  • sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
  • etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
  • 纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
  • CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。

具体应用场景

  1. 社交场景(微信朋友圈,通过地理位置索引实现附近的人、地点等功能)
  2. 游戏场景(存储游戏用户信息,用户装备,积分等)
  3. 物流场景(存储订单信息,订单状态的不断更新)
  4. 物联网场景(存储所有接入的智能设备信息,以及日志信息)
  5. 视频直播(存储用户信息,点赞互动信息等)

这些应用场景中,数据操作方面的共同特点是:

  • 数据量大
  • 写入操作频繁(读写都很频繁)
  • 价值较低的数据,对事务性要求不高。

什么时候选择使用MongoDB

  • 引用不需要事物以及复杂的join智齿
  • 新应用需求多变,数据模型无法确定时,方便快速迭代开发
  • 应用需要2-3K的读写QPS
  • 应用需要99.999%的高可用时

启动MongoDB

方式1:命令行参数方式启动服务
在 bin 目录中打开命令行提示符,输入如下命令:

mongod --dbpath=数据库路径 (=两边不能有空格)

我们在启动信息中可以看到,mongoDB的默认端口是27017,如果我们想改变默认的启动端口,可以通过–port来指定端口。
为了方便我们每次启动,可以将安装目录的bin目录设置到环境变量的path中, bin 目录下是一些常用命令,比如 mongod 启动服务用的, mongo 客户端连接服务用的。

Linux系统安装启动和链接MongoDB

步骤如下:
(1)先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 。
(2)上传压缩包到Linux中,解压到当前目录:

tar -xvf mongodb-linux-x86_64-4.0.10.tgz

(3)移动解压后的文件夹到指定的目录中:

mv mongodb-linux-x86_64-4.0.10 /usr/local/mongodb

(4)新建几个目录,分别用来存储数据和日志:

#数据存储目录 
mkdir -p /mongodb/single/data/db 
#日志存储目录 
mkdir -p /mongodb/single/log

(5)新建并修改配置文件

vi /mongodb/single/mongod.con

配置文件的内容如下:

systemLog:
 # MongoDB发送所有日志输出的目标指定为文件
 destination: file
 # mongod或mongos应向其发送所有诊断日志记录信息的日志文件路径
 path: "/mongodb/single/log/mongod.log"
 # 当mongos或mongod实例重新启动时,mongos或mongod会将条目附加到现有日志文件末尾。
 logAppend: true
storage:
 # mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
 dbPath: "/mongodb/single/data/db"
 journal: 
  # 启用或禁用持久性日志以确保数据文件保持有效和可恢复
  enabled: true
processManagement:
 # 启用在后台运行mongos或mongod进程的守护进程模式。
 fork: true
net: 
 # 服务实例绑定的IP,默认是localhost
 bindIp: localhost,10.9.135.195
 # 绑定的端口,默认是27017
 port: 27017

(6)启动MongoDB服务

[root@bobohost single]# /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf 
about to fork child process, waiting until server is ready for connections. 
forked process: 90384 
child process started successfully, parent exiting

(7)分别使用mongo命令和compass工具来连接测试。

提示:如果远程连接不上,需要配置防火墙放行,或直接关闭linux防火墙

#查看防火墙状态 
systemctl status firewalld 
#临时关闭防火墙 
systemctl stop firewalld 
#开机禁止启动防火墙 
systemctl disable firewalld

数据库操作

常用的命令小结
选择切换数据库:use articledb 
插入数据:db.comment.insert({bson数据}) 
查询所有数据:db.comment.find(); 
条件查询数据:db.comment.find({条件}) 
查询符合条件的第一条记录:db.comment.findOne({条件}) 
查询符合条件的前几条记录:db.comment.find({条件}).limit(条数) 
查询符合条件的跳过的记录:db.comment.find({条件}).skip(条数) 
修改数据:db.comment.update({条件},{修改后的数据}) 或db.comment.update({条件},{$set:{要修改部分的字段:数据}) 
修改数据并自增某字段值:db.comment.update({条件},{$inc:{自增的字段:步进值}}) 
删除数据:db.comment.remove({条件}) 
统计查询:db.comment.count({条件}) 
模糊查询:db.comment.find({字段名:/正则表达式/}) 
条件比较运算:db.comment.find({字段名:{$gt:值}}) 
包含查询:db.comment.find({字段名:{$in:[值1,值2]}})或db.comment.find({字段名:{$nin:[值1,值2]}}) 
条件连接查询:db.comment.find({$and:[{条件1},{条件2}]})或db.comment.find({$or:[{条件1},{条件2}]})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值