对于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的基本概念:

SQL术语

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins


表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

理解如下图:

mongodb数据存储在哪 mongodb内存数据库_字段

增删改查的语法

创建数据库:
    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条件的书写方式有:

mongodb数据存储在哪 mongodb内存数据库_字段_02

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)

mongodb数据存储在哪 mongodb内存数据库_mongodb数据存储在哪_03

排序:
    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 :(可选)抛出异常的级别。