MongoDB数据库的理解

对于class文件看不见,可以通过jd_gui反编译工具 查看
mongdb的优缺点:

  • 1、文档结构的存储方式,能够更便捷的获取数据
  • 2、内置GridFS,支持大容量的存储
  • 3、性能优越,在千万级文档对象下,查询速度高于mysql
与关系型数据库相比,Mongodb的缺点:
  • 1、不知道事务操作
  • 2、占用空间过大
  • 3、没有如Mysql那样成熟的工具

与redis相比:

  • mongodb的源语言是C++,redis也是C或C++
  • mongodb文件存储是BSON格式,类似于JSON,或自定义二进制数据
  • mongodb与redis的性能都很依赖内存大小,mongodb 有丰富的数据表达、索引;最类似于关系数据库,支持丰富的查询语言,redis数据丰富,较少的IO ,这方面mongodb优势明显。
  • mongodb不支持事物,靠客户端自身保证,redis支持事物,比较弱,仅能保证事物中的操作按顺序执行,这方面 redis优于mongodb。
  • mongodb对海量数据的访问效率提升,redis 较小数据量的性能及运算,这方面
  • mongodb性能优于redis .monbgodb 有mapredurce功能,提供数据分析,redis 没有 ,这方面mongodb优于redis

MongoDB的安装教程:

http://blog.csdn.net/qq_15006743/article/details/78840244

MongoDB的基本概念:

SQL术语 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
理解如下图: ![这里写图片描述](https://img-blog.csdn.net/20171226165216795?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTUwMDY3NDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

增删改查的语法

创建数据库:
    use DAATABASE_NAME
    如果数据库不存在,则创建数据库,否则切换到指定数据库
    
删除数据库:
    db.dropDatabase()
    删除当前数据库,默认是test,你可以使用db命令查看当前的数据库名
    
集合删除语法格式
    db.collection.drop()

查询:
     db.collectionName.find(query,projection)
         query:可选,表示查询的where条件
         projection:可选,表示select字段,取得是哪些字段
    db.collectionName.find(query,proejction).pretty()表示以易读的方式来读取数据
         query条件的书写方式有:

这里写图片描述

or条件的书写方式如下:
    db.col.find({
      $or: [
         {key1: value1}, {key2:value2}
      ]
    }).pretty()
    
and和or方式连用如下:
    db.col.find({
        "likes": {$gt:50}, 
        $or: [{"by": "菜鸟教程"},
        {"title": "MongoDB 教程"}


projection条件的使用:
    db.collection.find(query, {title: 1, by: 1})表示只返回title这个字段和_id
    db.collection.find(query, {title: 0, by: 0})表示出了tilte这个字段都返回
    只能全为0或者全为1;只有_id除外


分页查询:
db.COLLECTION_NAME.find()[.skip(Number)].limit(NUMBER)

这里写图片描述

排序:
    db.COLLECTION_NAME.find().sort({KEY:1})
    1表示asc;-1表示desc

插入:
    db.collectionName_insert(document)
    例如:
         db.col.insert({
		     title: 'MongoDB 教程', 
		     description: 'MongoDB 是一个 Nosql 数据库',
             by: '菜鸟教程',
             url: 'http://www.runoob.com',
             tags: ['mongodb', 'database', 'NoSQL'],
             likes: 100
		 })

更新:
    db.collectionName.update(query,update,{
        upsert:<boolean>,
        multi:<boolean>,
        writeConcern:<document>
    })
    参数说明:
        query : update的查询条件,类似sql update查询内where后面的。
        update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
        upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
        multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
        writeConcern :可选,抛出异常的级别。
        
删除:
    remove() 方法的基本语法格式如下所示:
    db.collection.remove(
        <query>,
        <justOne>
    )
    如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
    db.collection.remove(
        <query>,
        {
            justOne: <boolean>,
            writeConcern: <document>
        }
   )
   参数说明:
       query :(可选)删除的文档的条件。
       justOne : (可选)如果设为 true 或 1,则只删除一个文档。
       writeConcern :(可选)抛出异常的级别。
发布了45 篇原创文章 · 获赞 28 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_15006743/article/details/78903396