本文实例讲述了MongoDB数据库安装配置、基本操作。分享给大家供大家参考,具体如下:
1、简介
NO SQL:NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",是对不同于传统的关系数据库管理系统(RDBMS)的统称。NoSQL用于超大规模数据的存储,这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
RDBMS
NOSQL
- 高度组织化结构化数据
- 结构化查询语言(SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
-键 - 值对存储,列存储,文档存储
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 将数据存储为一个文档,数据结构由键值对(key=>value)组成。MongoDB 文档类似于 JSON 对象,可轻易查询文档中内嵌的对象及数组。字段值可以包含其他文档,数组及文档数组。可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上(即所谓的分片)。
2、安装配置
1、官网下载windows安装包https://www.mongodb.com/download-center#community
2、点击安装包,按照指示安装,选择custom自定义安装位置。注:我在安装3.6版本的时候软件报错无法完成安装,查询后发现将安装最后一步时的compass框不勾选,即可完成安装,如果需要compass,安装之后再次点击安装程序,选择change选项,重新安装compass。
3、配置mongodb:在你想要的位置新建三个文件:data文件夹(用于存放数据库数据),logs\mongodb.log文件(用于存放数据库日志),etc\mongodb.conf文件(用于相关配置)。打开mongodb.conf文件,输入相关配置信息:
#数据库路径 dbpath=D:\MongoDB\data #日志输出文件路径 logpath=D:\MongoDB\logs\mongodb.log #错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件 logappend=true #启用日志文件,默认启用 journal=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false quiet=true #端口号 默认为27017 port=27017
4、安装mongo服务:在mongo安装目录下的bin文件夹下打开命令行,输入:
mongod --config "D:\MongoDB\etc\mongodb.conf" --install --serverName "MongoDB"
--config后跟刚才保存的配置文件地址,--serverName后跟创建的服务的名字
执行之后在Windows10搜索服务可以看到mongodb服务,点击开启:
或者在MongoDB /bin 目录中执行命令行 mongod --dbpath ../data,启动mongo服务。
5、打开命令行:配置环境变量,添加环境变量到MongoDB的bin文件夹下,这样在任意位置新建一个命令行窗口,输入mongo就可以开启mongo的shell命令行了。
3、基本操作
1、创建/切换到数据库:use DatabaseName,新建一个数据库并不会显示出来,只有在向其中插入记录后才会显示
删除数据库:
db.dropDatabase()
2、创建一个集合:
db.createCollection('mall')
删除集合mall:
db.mall.drop()
3、创建用户。给数据库mall创建一个用户:
db.createUser({"user":"root",pwd:"mallroot",roles:[{role:'dbOwner',db:'mall'}]})
4、向数据库导入JSON文件。退出mongo,在cmd下执行:
mongoimport -d mall -c user --file F:\resource\mall-users
就将mall-users文件导入到mall数据库的user集合中
5、向集合mall中插入一条记录:
db.mall.insert({"name":"小米6","price":"2699"})
像json格式一样,以键值对的形式(key=>value)将你想要插入的数据写入即可。
6、删除一条数据:
db.mall.remove({mID:1005})
删除mID为1005的一条数据,注意如果在插入的时候{mID:"1005"}为字符串类型,{mID:1005}为number类型
7、修改一条数据:
db.mall.update({name:"小米6"},{$set:{price:"2399"}})
update中第一个参数是修改数据的条件,第二个参数利用$set设置修改的键值
8、查看集合中的数据:
db.mall.find()
在后面加.pretty()可以格式化查看其中数据。
条件查询:
db.mall.find({price:{$lt:2000}})
查询price低于2000的条目
9、数组操作
占位符$代表数组的下标,例如只更新cartList数组中满足条件的元素,
user.update({conditions},{ $set:{"cartList.$.productNum":productNum} })
$addToSet: 如果数组中没有该数据,向数组中添加数据,如果该数组中有相同数组,不添加
user.update({conditions},{ $addToSet:{cartList:cartItem} })
$pop:删除数组数据,1从头删除,-1从尾删除
user.update({conditions},{ $pop:{cartList:1} })
$pull:删除指定数据,例如对指定userId下的cartList数组删除其中指定的productId的元素
user.update({userId:userId},{ $pull:{ cartList:{productId:productId} } }
$push:向数组中插入一个元素、$each 遍历数组、$sort 对数组进行排序、$slice 对数组进行裁减、$position 指定插入数据的位置。
db.test.update( { _id: 5 }, { $push: { quizzes: { $each: [ { wk: 5, score: 2 }, { wk: 6, score: 1 }, { wk: 7, score: 3 } ], //遍历插入数据 $sort: { score: -1 }, //按score降序 $slice: 3, //裁剪只留下前三条数据 $position:2 //从第二个位置开始插入 } } } );
希望本文所述对大家MongoDB数据库程序设计有所帮助。
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]