mongodb 是一个基于分布式文件存储的数据库。由 c++ 语言编写。旨在为 web 应用提供可扩展的高性能数据存储解决方案。
mongodb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
mongodb属于nosql
在高负载的情况下,添加更多的节点,可以保证服务器性能。
mongodb 旨在为web应用提供可扩展的高性能数据存储解决方案。
mongodb 将数据存储为一个文档,数据结构由键值(key=>value)对组成。mongodb 文档类似于 json 对象。字段值可以包含其他文档,数组及文档数组。
类似于json的数据形式
nosql(nosql = not only sql ),意即"不仅仅是sql"。
在现代的计算系统上每天网络上都会产生庞大的数据量。
这些数据有很大一部分是由关系数据库管理系统(rdbms)来处理。 1970年 e.f.codd's提出的关系模型的论文 "a relational model of data for large shared data banks",这使得数据建模和应用程序编程更加简单。
通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。
nosql 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。nosql的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
nosql,指的是非关系型的数据库。nosql有时也称作not only sql的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
nosql用于超大规模数据的存储。(例如谷歌或facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
官网链接 https://www.mongodb.com/download-center?jmp=nav
启动之前要先添加环境变量
mongodb服务端启动的命令为mongod
配置数据存放的位置, 服务就可以正常的启动
我将配置放在专门的配置文件中
dbpath=e:\mongodb_data\data
启动时指定配置文件
mongod –config c:\mongodb\conf\master.cfg
object id: 对象id "_id" : objectid("5b151f8536409809ab2e6b26") #"5b151f85" 代指的是时间戳,这条数据的产生时间 #"364098" 代指某台机器的机器码,存储这条数据时的机器编号 #"09ab" 代指进程id,多进程存储数据的时候,非常有用的 #"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的 #以上四种标识符拼凑成世界上唯一的objectid #只要是支持mongodb的语言,都会有一个或多个方法,对objectid进行转换 #可以得到以上四种信息 #注意:这个类型是不可以被json序列化的 string: 字符串,必须是utf-8 db.table01.insertone({"name": "sath"}) boolean:布尔值,true 或者 false (这里有坑哦~在我们python中 true false 首字母大写) db.teble01.insertone({"status": true}) integer:整数 (int32 int64 你们就知道有个int就行了 ,一般我们用int32) db.table01.insert({"age":parseint("100")}) # 字符串会被转成int32 double:浮点数 (没有float类型,所有小数都是double) 默认是添加的所有的数数字都是double arrays:数组或者列表,多个值存储到一个键 (list哦,大python中的list哦) db.table01.insert({"hobby":["python","go", "java"]}) object:如果你学过python的话,那么这个概念特别好理解,就是python中的字典,这个数据类型就是字典 db.table01.insert({"1": {"name":"sath", "age":35}}) null:空数据类型 , 一个特殊的概念,none null db.table01.insert({"is_null": null}) timestamp:时间戳 db.table01.insert({"t_time":new date().valueof()}) date:存储当前日期或时间unix时间格式 (我们一般不用这个date类型,时间戳可以秒杀一切时间类型) db.table01.insert({"t_time":date()}) mon dec 24 2018 19:23:34 gmt+0800 db.table01.insert({"t_time":new date()}) 2018/12/24 下午19:23:19
增 1. db.table01.insert({"name":"wangjianwei", "age":22}) # 官方不推荐 # 官方推荐以下两种方式 2. 插入一条数据 db.insertone({"name":"zhangsan", "age":78}) # 会返回添加进去的对象 { "acknowledged" : true, "insertedid" : objectid("5c2091e508d12e25ff01af8d") } 3. 插入多条数据 db.table01.insertmany([{"name":"zhangsan", "age":78},{"name":"lisi", "age":36}]) { "acknowledged" : true, "insertedids" : [ objectid("5c20924e08d12e25ff01af8e"), objectid("5c20924e08d12e25ff01af8f") ] }
删 1. 删除所有 db.table01.remove({}) 官方推荐写法 2. 删除一个 db.table01.deleteone({"hobby":{$all:["抽烟"]}}) 3.删除所有匹配到的 db.table01.deletemany({"hobby":{$all:["抽烟"]}}) 4. 删除表 db.table01.drop()
改 语法格式: db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeconcern: <document> } ) query : update的查询条件 update : 要更新的内容 upsert : 可选,这个参数的意思是,如果不存在当前更新的记录,是否插入你要更新的值到数据中,默认是false,不插入。 multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 writeconcern :可选,抛出异常的级别。 官方推荐的写法 更新第一条数据 db.table01.updateone({"age":{$gt:70}}, {$set:{"age":0}}) 更新所有的数据 db.table01.updatemany({"age":{$gt:70}}, {$set:{"age":0}})
1. 查询所有 db.table01.find() 2. db.table01.find().pretty() # 当查询到的结果可读性更高 3. 根据条件查询 db.table01.find({"age":78}) # find后面可以跟条件 4. 多个条件之间使用and的关系 db.table01.find({"age":78, "name": "wangwu"}) # 多个条件之间是and的关系 5. 多个条件之间使用or关系 db.table01.find({$or:[{"age":78},{"name":"zhangsan"}]} 多个条件放在列表中, 每一个条件是一个字典 6. and和or一块使用 db.table01.find({"addr":"shanghai",$or:[{"name":"sath"},{"age": 88}]}) 7. in条件查询 db.table01.find({"name": {$in: ["zhangsan", "sath"]}}) name的值在某个列表中 8. 比较大小的方法 8.1 大于 db.table01.find({"age": {$gt: 60}}) 8.2 大于等于 db.table01.find({"age": {$gte: 53}}) 8.3 小于 db.table01.find({"age": {$lt: 53}}) 8.4 小于等于 db.table01.find({"age": {$lte: 36}}) 8.5 不等于 db.table01.find({"age": {$ne: 53}}) 8.6 等于 db.table01.find({"age": {$eq: 53}}) db.table01.find({"age":53}) 8.7 9. db.table01.find({"hobby":{$all:["喝酒", "烫头"]}}) # all: 包含列表中所有的条件的
10.模糊匹配
db.col.find({title:/教/}) # 模糊匹配
db.col.find({title:/^教/}) # 匹配开头
db.col.find({title:/教$/}) # 匹配末尾
保证数据库正在运行 mongodump -h 127.0.0.1 -o e:\db # 备份所有的数据库 mongodump --collection table01 --db day120 -o e:\db2 # 备份指定数据库中的的指定集合(表)
-h: mongdb所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 -d: 需要备份的数据库实例,例如:test -o: 备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
mongorestore -h 127.0.0.1 e:\db
--host <:port>, -h <:port>: mongodb所在服务器地址,默认为: localhost:27017 --db , -d : 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 --drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦! <path>: mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。 你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。 --dir: 指定备份的目录 你不能同时指定 <path> 和 --dir 选项。
参考: http://www.runoob.com/mongodb/mongodb-intro.html
如对本文有疑问, 点击进行留言回复!!
express+mongoose实现对mongodb增删改查操作详解
修复 Mac brew 安装 mongodb 报 Error: No available formula with the name ‘mongodb’ 问题详解
网友评论