mongoDB 常用的操作命令

  1. 查看当前数据库的版本号:db.version()
  2. 查看当前所在的数据库:db 默认是test数据库
  3. 查看当前数据库连接的地址:db.getMongo()
  4. 查看所有数据库:show databases / show dbs
    注:数据库如果没有数据,不会显示
  5. 切换数据库:use 数据库名
    注:如果没有这个数据库,会先创建再切入 — 数据库的隐式创建

增:

  1. 创建集合:db.createCollection(集合名)
  2. 查看集合:show collections / show tables
  3. 插入文档:
    db.集合名.insert({‘k’:‘v’})
    db.集合名.save({‘k’:‘v’})
    注1:如果想要插入多条数据,可以将多个对象放到一个数组中
    db.集合名.insert([{},{},{}])
    注2:如果插入数据的集合不存在,会先创建再插入 — 集合的隐式创建
  4. 查询数据:db.集合名.find()

10.查询当前数据库的状态:db.stats()

11.拷贝数据,将一个数据库中的数据拷贝到另一个数据库中
db.copyDatabase(‘数据库1’,‘数据库2’,‘地址’)

删:

12.删除集合:db.集合名.drop()

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

14.删除文档:remove(query[,justOne])
query: 必选项
justOne:可选参数,代表是否只删除一条数据,是一个布尔值。默认false
db.集合名.remove({}) 删除全部文档
db.集合名.remove(query) 根据条件删除,删除全部符合条件的数据
db.集合名.remove(query,true/false) 是否只删除一条数据

改:

15.更新数据/修改数据:db.集合名.update(query,update[,upsert,multi])

query:条件 (小于:查看mongodb数据量 mongodb 查看数据库_mongodbgt,等于:查看mongodb数据量 mongodb 查看数据库_数据库_02ne,大于等于:查看mongodb数据量 mongodb 查看数据库_数据库_03lte)

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

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

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

查:

16.查询文档:find([query,是否显示此字段])

db.集合名.find() 查询所有文档
db.集合名.find(query) 查询所有符合条件的文档
db.集合名.find(query,{k:1(显示)/0(不显示)})
注:find()方法查询时,查询出来的数据是一行显示的,可以使用pretty()将数据格式化输出

db.集合名.findOne([query,是否显示此字段]) 只查询一条数据,返回的数据格式是格式化之后的形式,所以,此方法不能使用pretty()

17.查询某一列去重后的数据
MySQL:select distinct 字段 from 表
MongoDB:db.集合名.distinct(k)

18.MongoDB中AND条件的使用:多个条件以逗号分隔
MySQL:select * from xxx where xxx=xxx and xxx=xxx
MongoDB:db.集合名.find({‘k1’:‘v1’,‘k2’:v2,……})

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

20.MongoDB中的限制查询:
MySQL:select * from xxx limit 2
MongoDB:db.集合名.find().limit(n) 查询前n条数据

21.MongoDB中的skip()
MySQL:select * from xxx limit 2,3
MongoDB:db.集合名.find().skip(n) 跳过前n条数据,从n+1条开始查询

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

23.MongoDB中的模糊查询:
MySQL:select * from 表 where name like %xxx%
MongoDB:db.集合名.find(‘k’:/xxxx/)

24.MongoDB中的排序:sort()
db.集合名.find().sort({‘k’:1(正序,从小到大)/-1(倒叙,从大到小)})

25.MongoDB中的统计:
MySQL:select count(*) from xxx
MongoDB:db.集合名.find().count()

游标:

26.MongoDB中的游标:
插入1000条数据:

for(var i=1;i<=1000;i++){
 db.集合名.insert({k:v,……})
 }
  1. 什么是游标?
    MongoDB中的游标和MySQL中的游标非常相似,可以通过对游标进行一系列的设置来控制游标查询数据,游标并不是查询的结果,而是查询的一个返回资源或者接口,通过这个接口可以逐条读取数据,和Python中的生成器类似,游标会消耗内存资源,所以,在游标使用之后,应该尽快释放掉,在MongoDB中,如果游标被定义之后,没有使用变量接收,那么就是一个查询结果,默认自动迭代20次,可以使用
    DBQuery.shellBatchSize=n n是一个数字,即一次显示的数据量

2.游标的使用
2.1 声明游标:var cursor=db.集合名.find()
2.2 next():可以移动游标,取出文档
2.3 print(cursor.next()) 返回一个[Object Bson],是Json的二进制类型
2.4 hasNext() 查看游标是否能够继续移动,返回值是布尔值,true代表能够继续移动,false代表不能继续移动

2.5 while(cursor.hasNext()){
 printjson(cursor.next())
 }

2.6 使用forEach()方法进行迭代 cursor.forEach(函数)

var cursor=db.集合名.find()
 var getContent=function(obj){
 printjson(obj.content)
 }
 cursor.forEach(getContent)

2.7 游标的声明周期:
游标迭代到最后一条数据时,自动关闭