MongoDB常用命令

#1.创建数据库
  use testdb

#2.创建集合
  db.user.insert({name:"Mr.Liu",age:23})

#3.查询
  db.user.find()  
  db.user.findOne()
  db.user.find().pretty()   pretty()用于格式化显示的内容

#4.修改
  # 修改不会影响其他属性列,主键冲突会报错
  db.user.update({name:"Mr.Liu"},{$set:{age:18}})

  # 第三个参数为true 则执行insertOrUpdate 操作,查询出则更新,没查出则插入
  db.user.update({name:"zhaomin"},{$set:{age:18}},true)

#5.删除
  # 删除满足条件的第一条 只删除数据 不删除索引
  db.user.remove({age:1})

  # 删除集合
  db.user.drop()
  
  #删除数据库
  db.dropDatabase()

#6.查看集合
  show collections  或者  show tables

#7.查看数据库
  show dbs

#8.插入数据
  db.user.insert()  #不允许键值重复
  db.user.save()    #若键值重复,可改为插入操作
  # 如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

#9.批量更新
  db.user.update({name:"zhaomin"},{$set:{name:"zhanmin11"}},false,true);
  # 批量操作需要和选择器同时使用,第一个false 表示不执行insertOrUpdate 操作,第二个true 表示执行批量

#10.更新器使用
    #1.$set:指定一个键值对,若存在就进行修改,不存在则添加
    db.user.update({id:137},{$set:{name:"Mr.Liu"}})
  
    #2.$inc:只使用于数字类型,可以为指定键值对的数字类型进行加减操作
    db.user.update({name:"zhangsan"},{$inc:{age:2}})  #执行结果是名字叫“zhangsan”的年龄加了2

    #3.$unset:删除指定的键
    db.user.update({name:"zhangsan"},{$unset:{age:1}})

    #4.$push:数组键操作
    1.如果存在指定的数组,则为其添加值;
    2.如果不存在指定的数组,则创建数组键,并添加值;
    3.如果指定的键不为数组类型,则报错;
    db.user.update({id:137},{$push:{hobby:"swim"}})

    #5.$addToSet:当指定的数组中有这个值时,不插入.反之插入
    db.user.update({id:137},{$addToSet:{hobby:"swim"}})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })   # 再次插入 swim,发现没成功

    #6.$pop:删除指定数组的值
     #1.当value=1 删除最后一个值
     #2.当value=-1 删除第一个值
    db.user.update({id:137},{$pop:{hobby:1}})  # 此处value为1,删除最后一个值

    #7.$pull:删除指定数组指定的值
    db.user.update({id:137},{$pull:{hobby:"swim"}})

    #8.$pullAll:批量删除指定数组中的值(可以指定多个同时删除)
    db.user.update({id:137},{$pullAll:{hobby:["study","swim"]}})

    #9.$:修改指定数组时,若数组有多个对象,但只想修改其中一些,则需要定位器
    db.user.update({"classes.type":"AA"},{$set:{"classes.$.sex":"male"}})
  
    #10.$addToSet 与 $each 结合完成批量数组更新操作
    db.user.update({name:"zhangsan"},{$set:{classes:{$each:["chinese","art"]}}})

 #11.高级查询
    #1
    db.user.find({},{_id:0,name:1,address:1})
    # 第一个空括号表示查询全部数据,第二个括号中值为0 表示不返回该字段,值为1 表示返回,默认情况下若不指定主键(_id主键),主键总是会被返回;

    #2.比较操作符
     $lt  < 
     $lte <= 
     $gt  > 
     $gte >= 
     $ne  !=
    # 查询年龄大于等于 25 小于等于 27 的人(不显示_id主键 和 hobby字段,并格式化显示)
    db.user.find({age:{$gte:25,$lte:27}},{_id:0,hobby:0}).pretty()
  
    #3.包含/不包含
     $in / $nin
    # 查询地址是 北京市 或 广东省 的学生的信息
    db.user.find({address:{$in:["北京市","广东省"]}},{_id:0}).pretty()

    #4. $or 或查询
    # 查询年龄大于30岁 或 地址为 北京市 的学生的信息
    db.user.find({$or:[{age:{$gt:30}},{address:{$eq:"北京市"}}]},{_id:0}).pretty()
    db.user.find({$or:[{age:{$gt:30}},{address:{$in:["北京市"]}}]},{_id:0}).pretty()

    #5. 正则表达式查询
    # 查询出名字中存在"liu"的学生的信息
    db.user.find({name:/liu/i},{_id:0}).pretty()

    #6. $not 查询
    $not 和 $nin 的区别是 :$not 可以用在任何地方
                           $nin 只用在集合上
    # 查询名字中不是"liu"的其他学生的信息($not needs a regex or a document)
    db.user.find({name:{$not:"liu"}},{_id:0}).pretty()

    #7.$all 的查询
    # 查询喜欢看 MONGOD 和 JS 的学生
    db.user.find({books:{$all:["JS","MONGODB"]}},{_id:0,name:1})

    #8.index 下标查询
    # 查询 第三个爱好 是 games 的用户
    db.user.find({"hobby.2":"games"}).pretty()

    #9.$size 的使用(不能与比较查询符同时使用)
    # 查询有 3 个爱好的用户信息
    db.user.find({hobby:{$size:3}},{_id:0}).pretty()

    #10.$slice 操作符返回文档中指定数组的内部值(此时hobby数组有5个值)
    # 查询并返回id=137,hobby数组第2-4个爱好的用户信息
    db.user.find({id:137},{_id:0,hobby:{$slice:[1,3]}}).pretty();  --会返回hobby数组下标为1,2,3的值
    
    # 查询并返回id=137 hobby数组第2个爱好的用户信息(数组下标从0开始,数组最后一个为-1)
    db.user.find({id:137},{_id:0,hobby:{$slice:1}}).pretty();  # 第2个爱好
    db.user.find({id:137},{_id:0,hobby:{$slice:-1}}).pretty(); # 最后一个爱好

    #11.limit/skip 分页查询
    # limit 返回指定条数查询出 user表 中前5条数据:
    db.user.find().limit(5).pretty()

    # skip 指定跨度查询  查询出 user表中第5条数据后的5条数据
     [类似分页.例如:单页5条数据,第2页数据为skip(5).limit(5);第3页数据为skip(10).limit(5)]
    db.user.find().skip(5).limit(5).pretty()

    # sort 排序  1为正序  -1为倒序
    # user表按年龄倒序查询
    db.user.find().sort({age:-1}).pretty()
  
    #12.count 查询结果条数
    db.user.find().count()

    #13.distinct 去重(使用 runCommand 函数)
    db.runCommand({ 
        distinct:"user", 
        key:"name", 
        query:{$or:[{name:"Miss.Ma"},{id:141}]} 
    }).values


#12.runCommand函数和findAndModify函数
   runCommand({
        findAndModify:"表名",
        query:{查询器},
        sort:{排序},
        update:{修改器},
        new:true/false  是否返回修改后的数据
   });  
   
   runCommand 函数可执行mongdb 中的特殊函数。
   findAndModify 就是特殊函数之一,用于返回执行返回update 或 remove 后的文档

   eg: db.runCommand({ 
          findAndModify:"user", 
          query:{id:137}, 
          update:{$set:{age:88}}, 
          new:true 
        })

MongoDB常用命令,可以进入MongoDB命令行,通过 help 命令来查看。

MongoDB支持的所有命令如下:

mongodb 批量修改数据类型 mongodb修改命令_字段

通过命令 db.help()来查看 数据库层面 的方法:

mongodb 批量修改数据类型 mongodb修改命令_数组_02

通过 db.mycoll.help() 来查看 数据库表层面 的方法

mongodb 批量修改数据类型 mongodb修改命令_字段_03

通过 sh.help() 来查看 分片层面 的方法

mongodb 批量修改数据类型 mongodb修改命令_主键_04

通过 rs.help() 来查看 副本Replica层面 的方法

mongodb 批量修改数据类型 mongodb修改命令_字段_05

其他方法,你可以查看 通过 help admin、help connect、help mr ......等来查看具体使用方法

mongodb 批量修改数据类型 mongodb修改命令_字段_06


MongoDB命令,介绍到此为止