MongoDB常用命令合集

数据库基本操作

  • 查看数据库show dbs

    mongodb中默认有以下几个数据库:
      admin  存放用户和权限
      local   存放本地化数据(分布式部署)
      config  存储分片信息
    
  • 创建或者切换数据库use databaseName

    选择一个数据库,如果数据库不存在就自动创建一个数据库
    只有向数据库中插入数据时,数据库才会被真实创建出来,而当数据库中没
    有数据时,use不会马上创建数据库,这个特点有效减少了存储空间的占用。
    
  • 删除数据库db.dropDatabase()

       注意:mongodb中函数都用小驼峰命名
    
  • 创建集合db.createCollection(collection_name)

  • 查看所有集合show collections

  • 删除集合db.collection_name.drop()

  • 集合重命名db.collection_name.renameCollection(‘new_name’)

  • 获取集合对象db.getCollection(‘collection_name’)

     等价于db.collection
    

集合中增加数据

  • insert方法插入数据db.collection_name.insert({数据内容})

    当向一个集合中插入数据的时候,如果这个集合不存在则自动创建
    最近插入的数据文档在数据库的最上方显示
    插入的数据域默认是字符串,如果在插入字段中不用双引号,数据库后台就会自动加上
    同时插入多条文档:
    

    db.collection_name.insert([{ }, { }, { }])

  • save方法插入文档db.collection_name.save()

     save与insert的区别:
     如果加_id域,如果这个_id域的值已经存在,则会替换原有的文档,
     而insert是不允许插入相同的_id的
    

集合中删除数据

MongoDB删除数据的命令比较简单,也没有太多的变化
语法:db.collection.remove(query ,justOne)
参数:
query与下文查询操作的query相同,justone表示只是删除匹配到的多条文档中的第一条文档

集合查询操作

  • db.collection_name.find(query,field)
  • findOne(query,field)

query的使用
因为键值对无法进行像MySQL中where子句那样强大的筛选作用(键值对筛选相当于MySQL中where子句筛选的等于条件),mongodb引入了操作符操作符的表达形式是以键值对形式出现的。下面介绍几种常用的操作符,更多的操作符可以查看Mongodb的官方文档。

1)比较操作符

   $eq  等于操作符
   例如:db.class.find( {age: {$eq : 18} },{_id :0} )
   更多操作符:
       $gt   大于操作符 
       $lt   大于操作符
       $lte  小于等于操作符
       $gte  大于等于操作符
       $ne   不等于操作符

细节:mongodb中多种类型的数据都是可以比较的,例如数值类型,字符串类型

2)范围操作符

$ in [ ]   在范围集合内的文档被匹配 (连续的范围)
例如:db.class.find( {age: {$in : [18, 23]} },{_id :0} )
如果是用 $ and只能这样表达: $and:[{age:{$gt:.. } }, {age:{$lt:.. } } ]
用gt和lt一起用来把范围括起来
$ nin[ ]  不在范围集合内的文档被匹配

3)逻辑操作符

$ and: [ ]   和运算符
query 中如果多个条件用逗号隔开,就为and关系(类似mysql中的where子句中的and)
例如:db.class.find( {$and: [{age: {$ gt 17}, {age: {$ lt 22} ],{_id :0} )  查询年龄大于17,小于22的同学
用$ and 可以改写为 db.class.find({$ and : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )
[ ]内一定要分成连个字典来表示两个条件,否则(只用一个字典来包含两个条件并用逗号分隔)
在语法上就只表示一个条件,只不过这个条件里面包含两个条件而已
一般平常使用多直接用逗号来分隔条件而不用 $and的操作符

$ or  或运算符
语法表达上跟 $ and 一样,表达的是或逻辑筛选


$not  取反运算符
db.class.find( {age: {$not {$ gt 17} } },{_id :0} )  匹配年龄小于等于17的文档
注意: $not 一般添加在条件值的前面,对值进行取反

$ nor  既不也不运算符
not(A or B) --> not A and not B
db.class.find({$ nor : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )
注意:如果筛选匹配的文档的域是其他文档不具备的;即一个域有些文档有值,有些文档没值,这种筛选是无法匹配的

集合的更新操作

语法:db.collection.update(query,update,upsert,multi)
与mysql不同,mongodb所有修改操作都用update,包括对集合的域值的修改和集合结构的修改

参数:
query   筛选要修改的文档,相当于where 
update  将筛选的文档修改为什么内容,相当于set,需要配合修改操作符一起使用
upsert  布尔值,默认为false,query文档不存在则不修改,如果为true,文档不存在,则根据query和update插入新文档
multi   布尔值,默认为false如果query筛选的为多条,则只修改第一条,如果设置为true,则修改所有符合条件文档

注意:upset 一般为用默认值false,因为如果原本没匹配的文档,很有可能是程序员自己输错了某些内容
修改操作符:
$ set
如果没有该文档,需要插入的时候是根据查询条件和设置条件作为域来插入的
如果需要修改的值为多个,就像插入数据一样,将不同域的值用一个{ }包起来
例如:db.class.update({name:'小张'},{$set:{age:16,sex:'m'}},true)

分页排序

语法:db.collection.skip(number).limit(number2).sort({条件})

相当于mysql里的limit(number,number2) by 条件,即 先按照sort条件排序完成 ,在跳过第number-1条,从第number条开始返回,只返回number2条,

重点 : 
Sort + Skip + Limit 是有执行优先级的 他们的界别分别是:
优先 Sort  其次 Skip 最后 Limt,即不管skip位置在哪里都是先排序
Skip + Limit 的优先级 也是先 Skip 再 Limit

求总数

语法:db.collectionName.count({})
大括号里可以放筛选条件query

求和

语法:db.collectionName.aggregate({ $group :{ _id : null, "count":{"$sum":"$filedName"}}})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值