MongoDB基本操作

1 MongoDB是什么?

 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库。 MongoDB是NOSQL【全称是 Not Only Sql】的非关系型数据库,易于扩展,可以 进行分布式文件存储,适用于大数据量、高并发、弱事务的互联网应用。 mongodb中有三元素:数据库(db),集合(collection),文档(document), 其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。 是类似json的bson【(Binary JSON)】格式 MongoDB 文档类似于 json的bson格式。字段值可以包含其他文档,数组及文档数 组。 MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应 用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支 持的最大文件尺寸为2GB。

为什么要用mongodb

它的特点是高性能、易部署、易使用,存储数据非常方便。 主要功能特性有: *面向集合存储,易存储对象类型的数据。 *模式自由。 *支持动态查询。 *支持完全索引,包含内部对象。 *支持查询。 *支持复制和故障恢复。 *使用高效的二进制数据存储,包括大型对象(如视频等)。 *自动处理碎片,以支持云计算层次的扩展性。 *支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 *文件存储格式为BSON(一种JSON的扩展)。

*可通过网络访问。

应用场景介绍

其主要适应场景如下: 1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。 2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层 的数据源过载。 3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置 支持。

不适用的场景如下: 1)要求高度事务性的系统。 2)传统的商业智能应用。 3)复杂的跨文档(表)级联查询。

MongoDB常规命令

1. 常用的命令 cls   》清屏

show dbs    》显示数据库列表

use dbname    》进入dbname数据库,大小写敏感,没有这个数据库也不要紧

show collections    》显示数据库中的集合,相当于表格

db  》查看当前的数据库

2. 创建&新增 db.books.save({"bookName":"java"})    创建了名为books的集合,并新增了一条 {"bookName":"java"}的数据 db.books.insert({"bookName":"java"})    在books集合中插入一条新数据,如果 没有books这个集合,mongodb会自动创建 save()和insert()也存在着些许区别: 若新增的数据主键已经存在,insert()会不做操作并提示错误,而save() 则更改原来的 内容为新内容。 存在数据:{ _id : 1, " name " : " n1 "} ,_id是主键 insert({ _id : 1, " name " : " n2 " })    会提示错误 save({ _id : 1, " name " : " n2 " })     会把 n1 改为  n2 ,有update的作用。

3. 删除 db.books.remove({})    删除books集合下所有数据 db.books.remove({"bookName": "php"})    删除books集合下bookName=php 的数据 db.books.drop()  删除集合(表)books db.dropDatabase()    删除当前数据库

4. 查找 db.books.find()    查找books集合中所有数据 db.books.findOne()    查找books集合中的第一条数据 db.books.find().pretty()    格式化(美化)查找books集合中所有数据

5. 修改(更新)($set、$inc) multi:true 这个值为true:所有匹配的结果都会被修改 这个值为false:所有匹配的结果只会修改第一条

db.books.update({},{$set:{"bookName":"js"}},false,true)

第一个参数:查询条件 第二个参数:修改的字段 第三个参数:(默认:true)是否完全覆盖原来的那条数据 第四个参数:默认:false,是否把修改所有匹配的结果

db.books.update({},{$set:{"bookName":"js"}},{multi:true}) 第一个参数:查询条件 第二个参数:修改的字段 第三个参数:等同于上面的第四个参数

在基础上增加 把价格在原来基础上降价20 db.books.update({},{$inc:{"price":-20}}, {multi:true})

6、关系运算符 等于(没有关键字) {key:value} db.books.find({"price":100})

大于($gt) db.books.find({"price":{$gt:100}})

大于等于($gte) db.books.find({"price":{$gte:100}})

小于($lt) db.books.find({"price":{$lt:666}})

小于等于($lte) db.books.find({"price":{$lte:666}})

不等于($ne) db.books.find({"price":{$ne:666}}) in($in) db.books.find({"price":{$in:[120,666]}})

not in($nin) db.books.find({"price":{$nin:[120]}})

7、逻辑运算符 与(没有关键字) {key:value,key:value}

db.books.find({"price":{$lt:200,$gt:100}}) 或($or) db.books.find({$or:[{"price":120},{"price":666}]})

非($ne)

8、函数 查询总条数(count()) db.books.count() db.books.count({"price":120})

排序(sort()) db.books.find().sort({"price":-1}):倒序 db.books.find().sort({"price":1}):正序

分页(skip()、limit()) db.books.find().skip(1).limit(2)

排序并分页 db.books.find().sort({"price":1}).skip(1).limit(2)

以下了解了解就好

更新操作 multi:true

db.books.update({"_id":ObjectId("58d1be29fdc26b33306299fa")},{$set:{"name":"pp","price":420}},false,true) db.books.update({"_id":ObjectId("58d1be29fdc26b33306299fa")},{$set:{"name":"pp","price":420}},{"multi":true})

在基础上增加 db.books.update({},{$inc:{"price":-20}}, {multi:true})

增加列 db.books.find().update({},{$set:{"store":33}},{multi:true}) 删除列 db.books.update({},{$unset:{"store":""}},{multi:true})

存在某列的结果 db.books.find({"name":{$exists:true}})

不存在某列的结果

db.books.find({"name":{$exists:false}})

某列存在并且为空的结果 db.books.find({"name":{$in:[null],$exists:true}})

全部包含 db.books.find({"tags":{$all:["web","java"]}}) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值