MongoDB命令快速上手

  1. MongoDB与MySQL的区别:
  2. MongoDB 数据操作
  3. MongoDB 管理操作

MongoDB与MySQL的区别:

MongoDB是面向文档的DBMS(数据库管理系统),缺少事务机制(Transaction),不支持关联查询(Join),查询性能提升,索引难建立。

MySQL是传统的RDBMS(关系数据库管理系统),是以ACID(原子性、一致性、隔离性、持久性)为第一守则,实现分布式时,CA成为首要优先级。

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。CAP原则是分布式计算系统的基石。

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,BASE是对CAP中一致性和可用性权衡的结果,其核心思想是:即使无法做到强一致性(Strong consistency),但可以根据自身的业务特点,采用适当的方式使系统达到最终一致性(Eventual consistency)。

Mongodb中有多个databases,每个database可以创建多个collections,collection是底层数据分区(partition)的单位,每个collection都有多个底层的数据文件组成。

Mongodb 3.0默认存储引擎为MMAPV1(collection级的锁),3.2+默认引擎为wiredTiger(文档级的锁)。

MongoDB的优点,不用处理复杂的数据关系逻辑(连表查询),你想要的数据是什么样子,存在数据库里的就是什么样子(Schema)。在没有事务需求的情况下,Mongodb比mysql多了分盘容错性的好处,但是却没有因此而付出代价。

缺点,Mongodb无法做到ACID,所以对事务有要求的应用不适合用它。(2018 MongoDB4.0+版本已经可以支持事务了。)

MongoDB 数据操作

  1. 查询满足条件的数据
    db.getCollection('players').find({"base.nick_name":''})
    
  2. 模糊查询(i 忽略大小写)
    db.getCollection('players').find({'base.nick_name':/999/})
    db.getCollection('players').find({'base.nick_name':/^M999/i})
    
  3. 查询所有数据,返回数据只包含指定字段
    db.getCollection('players').find({},{'_id':1,'at':1,'base.nick_name':1})
    
  4. 查询指定字段满足条件的数据,只返回_id字段

    $ne 不等于
    $in 包含
    $nin 不包含
    $exists 字段存在
    $mod 取模
    $size 数组元素个数

    db.getCollection('players').find({"friends.frds":{$exists:true}},{'_id':1})
    db.getCollection('players').find({'base.nick_name':{'$in':['qte123','kir']}})
    
  5. 查询对象数据转换
    db.getCollection('players').find({"_id":ObjectId('123456789')})
    
  6. 批量更新
    db.getCollection('players').update({},{$set:{'base.lv':NumberInt(20)}},{multi:true,upsert:false})
    
  7. 对输出结果处理
    db.getCollection('players').find({}).forEach(function(u){printjsononeline(u)})
    
  8. 联合查询(MongoDB 3.5以上支持类型转换,低版本需要两字段类型相同)
    db.getCollection('players').aggregate([{$lookup:{from:'accounts',localField:'_id',foreignField:'guid',as:"account"}}])
    

MongoDB 管理操作

  1. 备份:
    mongodump -h <ip>:<port> -d dbname -o datadir
    
  2. 还原:
    mongorestore -h <ip>:<port> -d dbname datadir
    
  3. 命令行连接MongoDB:
    mongo [<username>:<password>@]<ip>:<port>/<dbname>
    
  4. 创建新数据库:
    use new_dbname
    
  5. 其他:
    help
    db # 显示当前DB
    show dbs
    show collections
    db.stats()
    

参考:
mongorocks引擎原理解析
MangoDB高级查询
MongoDB 备份(mongodump)与恢复(mongorestore)
CAP定理,BASE理论


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com

文章标题: MongoDB命令快速上手

文章字数: 751

本文作者: Jun

发布时间: 2019-01-23, 22:34:00

最后更新: 2020-01-14, 10:18:33

原始链接: http://yoursite.com/2019/01/23/MongoDB命令快速上手/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏