mongo数据库操作

1.查看当前数据库版本号:db.version()

2.查看当前所在的数据库:db 默认是test数据库

3.查看当前数据库连接的地址:db.getMongo()

4.查看所有数据库:show databases / show dbs
注:数据库中如果没有数据,不会显示

5.切换数据库:use 数据库名
注:如果切换到一个不存在的数据库,会先创建再切入 —> 数据库隐式创建

6.创建集合:db.createCollection(‘集合名’)

7.查看集合:show collections / show tables

8.插入文档:
db.集合名.insert({‘k1’:‘v1’,‘k2’:‘v2’,……})
db.集合名.save({‘k1’:‘v1’,‘k2’:‘v2’,……})
注1:如果想要插入多条数据,可以将多个对象放到一个数组中。
db.集合名.insert([{‘k1’:‘v1’,‘k2’:‘v2’,……},{},{}])
注2:如果插入数据的集合不存在,会先创建再插入数据。集合的隐式创建

9.查询数据:db.集合名.find()

10.删除集合:db.集合名.drop() 返回值:true代表删除成功

11.删除当前所在的数据库:db.dropDatabase()

12.更新数据/修改数据:update(query,update[,upsert,multi])
query:条件 (小于: l t , 大 于 : lt,大于: lt,gt,小于等于: l t e , 大 于 等 于 : lte,大于等于: lte,gte,等于: e q , 不 等 于 : eq,不等于: eqne)

update:更新后的数据,新数据
$set:设置值 $inc:增长某个列的值 $rename:重命名 $unset:删除

upsert:可选参数,是一个布尔值。作用:如果不存在update记录,是否插入更新的数据?
true代表插入,false代表不插入,默认的是false

multi:可选参数,是一个布尔值。作用:是否将查询出来的所有符合条件的数据,全部更新?
true代表全部更新,false代表只更新第一条,默认是false

  1. 删除文档:remove(query) query:是必选项
    db.集合名.remove({}) 清空文档
    db.集合名.remove({query}) 根据条件删除,删除所有符合条件的文档
    db.集合名.remove({query},1) 删除符合条件的一条数据 注:只能够删除一条数据,是布尔类型

14.查询文档:find(query) query:可选项
db.集合名.find() 查询所有文档
db.集合名.find(query) 查询所有符合条件的文档
注:find()方法查询时,查询出来的数据比较乱,可以使用pretty()进行格式化输出

db.集合名.findOne(query):query是可选项,只查询一条数据,返回的数据格式是格式化之后的形式,并且,不能和pretty()结合使用。

15.MongoDB中AND条件的使用:多个条件使用逗号分隔即可
MySQL:where 条件1 and 条件2
MongoDB:find({‘k1’:‘v1’,‘k2’:‘v2’,‘k3’:‘v3’})

16.MongoDB中OR条件的使用:使用KaTeX parse error: Expected '}', got 'EOF' at end of input: …:db.集合名.find({'or’:[{‘k1’:‘v1’},{‘k2’:‘v2’},……]})

17.MongoDB中AND和OR如何同时使用?
MongoDB:db.集合名.find({‘k1’:‘v1’,’$or’:[{‘k2’:‘v2’},{‘k3’:‘v3’},……]})

18.MongoDB中使用限制查询:
MySQL:select * from 表 limit n,m
MongoDB:db.集合名.find().limit(n) 查询前n条数据

19.MongoDB中skip():
db.集合名.find().skip(n) 跳过前n条数据,从第n+1条数据开始查询

20.MongoDB实现分页:
db.集合名.find().skip(n).limit(m) 跳过n条数据,从n+1条数据开始查询,查询m条

21.MongoDB的游标
插入1000条数据:
for(var i=1;i<=1000;i++){
db.集合名.insert({‘k1’:‘v1’,‘k2’:‘v2’,……})
}

  1. 什么是游标?
    MongoDB中的游标和MySQL中的游标非常类似,可以通过对游标进行一系列的设置来控制游标查询数据,游标并不是查询的结果,游标是查询的一个返回资源或者接口,通过这个接口可以逐条读取数据,和Python中的生成器类似,游标会消耗内存资源,所以,在游标使用之后,应该尽快释放。在mongo shell中,如果游标被定义之后,没有使用变量进行接收,那么,就是一个查询结果,默认自动迭代20次(显示20条数据),如果想要查询更多数据,可以使用it查看。
    调整游标的迭代次数:DBQuery.shellBatchSize=n n是数字,即一次显示的数据量

  2. 游标的使用

2.1 声明游标:var cursor=db.集合名.find()
2.2 next():可以移动游标,取出游标下一个的文档
2.3 print(cursor.next()) 返回一个[object BSON],是JSON的二进制类型
2.4 printjson(cursor.next()) 查看游标对应的数据内容
2.5 hasNext() 查看游标是否能够继续移动,返回值是布尔值,true代表能够继续移动,false代表不能够继续移动

2.6 使用游标输出所有数据:
while(cursor.hasNext()){
printjson(cursor.next())
}

2.7 使用forEach()方法进行迭代 cursor.forEach(函数)
var cursor = db.集合名.find()
var getConetent = function(obj){
printjson(obj.content)
}
cursor.forEach()

2.8 游标的生命周期:
游标迭代到最后一条数据时,自动关闭

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值