Mongodb中的一些总结

一、概念

MongoDB是一个基于分布式文件存储的数据库,有C++语言编写,旨在为WEB应用提供可扩展性的高性能数据存储解决方案。是目前世界上应用最广泛的nosql数据库。

二、特点及优缺点

 MongoDB的特点:高性能、易部署、易使用,方便存储
  MongoDB优缺点:
            优点
            面向文档存储的数据库(数据存储是BSON格式的)
            有丰富的查询指令
            支持索引
            具有分片系统
            无模式
            缺点
            存储占用空间大
            不支持事物
            不维护32位的系统了

注: 和JSON相比,用 BSON主要会实现以下三点目标:
            1.更快的遍历速度
            2.操作更简易
            3.增加了额外的数据类型
三、对比MySQL
 MongoDB和MySQL的对应
              MySQL      MongoDB       解释
            database    database      数据库
            table        collection    表/ 集合
            row           document    记录行 / 文档
            column        filed        字段 / 域
            index        index         索引
四、命名规范
            数据库的命名规范:通过标识符,一般是utf-8字符串,不能为空,不能用local/admin/config这三个
            集合的命名规范:不能是空字符串,也不能出现-,0等,不能以system,$开头
五、Mongo的基础指令

  • 关于数据库

            show  dbs       获取当前所有的数据库
            db                   查询当前所在的数据库
            use database   创建数据库(没有就创建,有就使用;database是数据库的名字,可以自己起,符合命名规范即可)

            db.stats()        查询当前数据库的状态(但信息较长,一般用到的是里面的文档,所以一般会toArray转换成数组)

            db.help()         查询帮助

            db.dropDatabase()    删除当前的数据库

            db.version()     获取当前数据库的版本

             db.database_name.help   查询任意数据库的帮助

  •  关于集合

            db.createCollection(“集合名”,{size:20,capped:true,max:100})     创建一个集合,后面限定信息可不写
            db.collection_name.find()   查询当前集合内信息             

            db.getCollection("account");  得到指定名称的集合
            db.getCollectionNames();      得到当前数据库下面所有的集合,以数组形式展示出来
            show collections              会展示当前db下所有的集合,
            db.printCollectionStats();    显示当前db所有聚集的状态
            db.collectionname.drop();     删除集合

             注:capped  定容量db.collName.isCapped(); //判断集合是否为定容量;size优先级最高
          下面是假设创建了一个user的集合之后的,一些增删改查操作

//增加
            db.user.save({name: ‘zhangsan', age: 25, sex: true});
            db.user.insert({name: ‘李四'})    向当前集合内插入文档数据
            db.user.insertOne({"name":"王二"})    向当前集合内插入一条文档数据
            db.user.insertMany([{“name”:"小洪",“genres”:["犯罪",“剧情”]},{“name”:"小红"}, 
                                          {“name”:"小宏"}])    向当前集合内插入多条文档数据

// 修改
            //所有数据都添加一个age的数据    update只会更新第一个数据
            db.user.updateMany({},{$set:{age:20}})
            //修改name是王二的数据为name成老王
            db.user.updateOne({name:"王二"},{$set:{name:"老王"}})
            //修改年您是25的数据中name改为changeName
            //相当于:update user set name = ‘changeName' where age = 25;
            db.user.update({age: 25}, {$set: {name: 'changeName'}}, false, true);
            
            //1/修改的数据不存在---第一个参数false(不添加)true(添加)  不写默认值为false
            //2/数据有重复的---第二个参数true符合条件的数据均修改,false默认修改第一条数据

            //相当于:update user set age = age + 50 where name = ‘李四';
            db.user.update({name: '李四'}, {$inc: {age: 50}}, false, true);
            
            //相当于:update user set age = age + 50, name = ‘hoho' where name = ‘李四';
            db.user.update({name: '李四'}, {$inc: {age: 50}, $set: {name: 'hoho'}},false, true);

//删
            db.user.remove({age: 20});   会删除所有满足条件的
            db.user.remove({age: 20},true);   只会删除第一条
            db.user.deleteOne({"name":"张三"});  
            db.user.deleteMany({age:20})
            db.user.remove({})           删除集合中所有的数据

//查
            db.user.find()                  查询所有记录
            db.user.distinct("name");  查询去重后数据 
            db.user.find({"age": 22}); 查询age = 22的记录
            db.user.find({age: {$gt: 22}});  查询age > 22的记录
            db.user.find({age: {$lt: 22}}); 查询age < 22的记录
            db.user.find({age: {$gte: 25}}); 查询age >= 25的记录
            db.user.find({age: {$lte: 25}}); 查询age <= 25的记录
            db.user.find({age: {$gte: 23, $lte: 26}}); 查询age >= 23 并且 age <= 26
            db.user.find({name: /mongo/});  查询name中包含 mongo的数据
            db.user.find({name: /^mongo/});  查询name中以mongo开头的
            db.user.find({}, {name: 1, age: 1});  查询指定列name、age数据
            db.user.find({age: {$gt: 25}}, {name: 1, age: 1}); 查询指定列name、age数据, age > 25
            升序:db.user.find().sort({age: 1});  按照年龄排序
                        降序:db.user.find().sort({age: -1});
            db.user.find({name: 'zhangsan', age: 22}); 查询name = zhangsan, age = 22的数据
            db.user.find().limit(5);              查询前5条数据
            db.user.find().skip(10);         查询10条以后的数据
            db.user.find().limit(10).skip(5);  限制数据量/几条数据后
            db.user.find({$or: [{age: 22}, {age: 25}]});  or与 查询
            db.user.findOne();   查询第一条数据
            db.user.find({age: {$gte: 25}}).count();  查询某个结果集的记录条数
            db.user.find({sex: {$exists: true}}).count();  查询某一项的记录数目
            

最简单的增删改查:
            db.uses.find()
            db.uses.insert()
            db.uses.remove()
            db.uses.update()

六、MongoDB的安装

分Windows系统和Mac

Windows系统的安装方法:

第一步:下载安装包官网下载MongoDB,下载好了不要急着双击安装

第二步:在你计算机的一个盘符根目录下面(如D 盘)创建一个mongodb的文件夹,用来安装你的安装包。

              也在其根目录下再创建一个data文件夹,打开data建一个db文件夹,因为MongoDB会默认找这个文件夹建库。

第三步:双击你下载的MongoDB安装包,安装类型选择custom,一路安装,路径选择mongodb文件夹就可以了。

第四步:找到mongodb文件夹下的bin文件夹,先打开mongod.exe,再执行mongo.exe就可以运行你的数据库了。

第五步:可以在浏览器中输入127.0.0.1:27017测试安装成功。

Mac系统的安装方法:

在Mac OS上面安装MongoDB,你可以通过编译源代码来安装 ,也可以在Mac OS上使用Homebrew安装。

这里介绍使用Homebrew安装MongoDB。

第一步:更新Homebrew的package数据库:

$ brew update

$ brew install mongodb

第二步:启动MongoDB

$ mongod --config /usr/local/etc/mongod.conf

第三步:使用MongoDB

$ mongo


            
         

猜你喜欢

转载自blog.csdn.net/keep789/article/details/81504324