MongoDB(一)

MongoDB基础部分

MongoDB 是一个基于分布式文件存储的数据库。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

MongoDB创建数据库
格式: use DATABASE_NAME
PS:MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

删除操作
删除数据库:db.dropDatabase()(需切换到当前数据库)
删除集合:db.[collection_name].drop()

创建集合

db.creatCollection(name,options)
·name:要创建的集合名称
·options:可选参数,指定有关内存大小及索引的选项
查看已有集合:show collections
在MongoDB中,可以不用创建集合,在插入文档时,若所插入的集合不存在,则会自动创建该集合。

插入文档
文档的数据结构和JSON基本一样,所有存储在集合中的数据都是BSON格式
语法:db.COLLECTION_NAME.insert(document)注:document参数也可以是一个(key-value)变量
实例:

 db.col.insert({title: 'MongoDB 教程', 
     description: 'MongoDB 是一个 Nosql 数据库',
     by: '菜鸟教程',
     url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
     likes: 100 })

查看已插入的文档:db.col.find()
方法二:
格式:db.col.save(document)
若不指定_id字段,save()方法类似于insert()方法,如果指定_id字段,则会更新该_id的数据。
3.2版本更新后新增插入文档语法:

1、db.collection.insertOne():向指定集合中插入一条文档数据
2、db.collection.insertMany():向指定集合中插入多条文档数据

MongoDB更新文档
MongoDB使用update()和save()方法更新集合中的文档
update():用于更新已存在的文档

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
参数说明:
query:update的查询条件,类似sql update查询里where后面的内容
update:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面
upsert:可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入
multi:可选,mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
writeConcen:可选,抛出异常的级别

save()方法:通过传入的文档来替换已有文档。

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)
document:文档数据
writeConcern:可选,抛出异常级别
//注意_id的值要相同

MongoDB删除文档
MongoDB中使用remove()函数来移除集合中的数据(最好在使用remove前先执行find函数来判断执行的条件是否正确)
语法:

db.collection.remove(
   <query>,
   <justOne>
)
qurey:可选,删除的文档的条件
justOne:可选,如果设为tue或1,则只删除一个文档,如果不设置该参数,或使用默认值false,则删除所有匹配条件的文档。
writeConcern:可选,抛出异常的级别

官方最新文档删除操作的方法(推荐):deleteOne() 和 deleteMany()

删除集合下全部文档:
db.inventory.deleteMany({})
删除 status 等于 A 的全部文档:
db.inventory.deleteMany({ status : "A" })
删除 status 等于 D 的一个文档:
db.inventory.deleteOne( { status: "D" } )

MongoDB查询文档
MongoDB查询文档使用find()方法,find()方法以非结构化的方式来显示所有文档
语法:

db.collection.find(query,projection)
query:可选,使用查询操作符指定查询条件
projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)

如果需要以易读的方式来读取数据,可以使用pretty()方法,语法格式如下:

db.collection.find().pretty()
pretty()方法以格式化的方式来显示所有文档

findOne(),只返回一个文档
查询的条件语句

操作格式范例sql中的类似语句
等于{<key>:<value>}db.col.find({“by”:“菜鸟教程”}).pretty()where by = ‘菜鸟教程’
小于{<key>:{$lt:<value>}}db.col.find({“likes”:{$lt:50}}).pretty()where likes < 50
小于或等于{<key>:{$lte:<value>}}db.col.find({“likes”:{$lte:50}}).pretty()where likes <= 50
大于{<key>:{$gt:<value>}}db.col.find({“likes”:{$gt:50}}).pretty()where likes > 50
大于或等于{<key>:{$gte:<value>}}db.col.find({“likes”:{$gte:50}}).pretty()where likes >= 50
不等于{<key>:{$ne:<value>}}db.col.find({“likes”:{$ne:50}}).pretty()where likes != 50

MongoDB AND条件
MongoDB的find()方法可以传入多个键(key),每个键以逗号隔开

db.col.find({key1:value1, key2:value2}).pretty()

MongoDB OR条件
MongoDB OR条件语句使用了关键字$or,语法格式如下

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

MongoDB条件操作符
条件操作符用于比较两个表达式并从MongoDB集合中获取数据
MongoDB中条件操作符有:
(>)大于 - $gt-----------greater than
(<)小于 - $lt------------less than
(>=)大于等于 - $gte----------gt equal
(<=)小于等于 - $lte-----------lt equal
(!=)不等于 - $ne--------------not equal
(=)等于 - $eq------------------equal
实例:获取“col”集合中“likes”大于100的数据

db.col.find({likes : {$gt : 100}})

MongoDB $type 操作符
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
※MongoDB中的类型

类型数字备注
Double1
String2
Object3
Array4
Binary data5
Undefined6已废弃
Object id7
Boolean8
Date9
Null10
Regular Expression11
JavaScript13
Symbol14
JavaScript(with scope)15
32-bit integer16
Timestamp17
64-bit integer18
Min key255Qurey with -1
Max key127

实例:如果想获取“col”集合汇总title为String的数据

db.col.find({"title" : {$type : 2}})
或
db.col.find({"title" : {$type : 'string'}})

MongoDB Limit与Skip方法
MongoDB Limit()方法
从MongoDB中读取指定数量的数据记录,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
语法:limit()方法基本语法如下

db.COLLECTION_NAME.find().limit(NUMBER)

MongoDB Skip()方法
使用skip()方法跳过指定数量的数据,skip方法接受一个数字参数,作为跳过的记录数

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

MongoDB排序
在MongoDB中使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式(1为升序,-1为降序)

db.COLLECTION_NAME.find().sort({KEY:1})
key:按照指定的键值作为排序的依据

MongoDB索引
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
createIndex()方法:

db.collection.createIndex(keys, options)
key:要创建的索引字段(1为指定按升序创建索引,降序为-1)
实例:db.col.createIndex({"title":1})
可以设置使用多个字段创建索引

1、查看集合索引:db.col.getIndexes()
2、查看集合索引大小:db.col.totalIndexSize()
3、删除集合所有索引:db.col.dropIndexes()
4、删除集合指定索引:db.col.dropIndex(“索引名称”)
MongoDB聚合
MongoDB中聚合主要用于处理数据(如统计平均值,求和等),并返回计算后的数据结果,使用 aggregate() 方法。
aggregate()方法:db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
MongoDB复制(副本集)
MongoDB复制是将数据同步在多个服务器的过程
MongoDB分片

MongoDB备份与恢复
备份:使用mongodump命令。该命令可以导出所有数据到指定目录中。

mongodump -h dbhost -d dbname -o dbdirectory
-h:MongoDB所在服务器地址
-d:需要备份的数据库实例
-o:备份的数据存放位置

恢复:使用mongorestore命令

mongorestore -h <hostname><:port> -d dbname <path>
--host <:port>, -h <:port>:MongoDB所在服务器地址,默认为: localhost:27017 
--db , -d :需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 
--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
<path>:mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。
--dir:指定备份的目录你不能同时指定 <path> 和 --dir 选项。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值