【Mongo】

MongoDB简介:

【定义】

    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

    MongoDB是一个介于关系数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富的,最像关系数据库的。

    MongoDB在高负载的情况下,添加更多的节点,可以保证服务器性能。

    MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成,类似于JSON对象,字段值可以包含其他文档,数组及文档数组。

【优点】

  • 文档结构的存储方式,能够更便捷的获取数据

  • 内置GridFS,支持大容量的存储

  • 海量数据下,性能优越

  • 动态查询

  • 全索引支持,扩展到内部对象和内嵌数组

  • 查询记录分析

  • 快速,就地更新

  • 高效存储二进制大对象 (比如照片和视频)

  • 复制(复制集)和支持自动故障恢复

  • 内置 Auto- Sharding 自动分片支持云级扩展性,分片简单

  • MapReduce 支持复杂聚合

  • 商业支持,培训和咨询

【缺点】

  • 不支持事务操作

  • MongoDB 占用空间过大 (不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了)

  • MongoDB没有如MySQL那样成熟的维护工具

  • 无法进行关联表查询,不适用于关系多的数据

  • 复杂聚合操作通过mapreduce创建,速度慢

  • 模式自由,自由灵活的文件存储格式带来的数据错

  • MongoDB 在你删除记录后不会在文件系统回收空间。除非你删掉数据库。但是空间没有被浪费

MongoDB下载:

1.网址: MongoDB: The Developer Data Platform | MongoDB

2.点击【Try Free】=>点击【Server】选择合适的版本,下载(最好不要下载到系统盘)

MongoDB安装&启动:

文件夹下的【data】目录,新建【db】文件夹

1.执行命令

mongod --dbpath E:\mongo\data\db        //在【bin】目录下打开cmd,E:\后为db的路径 

>mongo服务器

>1.找到服务器文件夹,路径为C:\MongoDB\Server\3.6\bin

>2.进入路径(path)之后(双击复制路径)进行全局变量配置

>Mongo数据库(一个新的文件夹)

>1.文件夹路径为 D:\mongo_data\db

>启动mongo

1.启动mongo服务器,让mongo服务器关联mongo数据库(文件夹)路径

2.打开一个cmd 之中执行  mongod --dbpath  D:\mongo_data\db

3.再开一个cmd 之中执行  mongo

【解析】mongod :表示让计算机在全局环境变量之中的path路径 查找对应的mongod 开启mongo服务器

             --dbpath:参数;参数是用来配置前一个指令的;配置mongo服务器关联的数据库文件夹位置

             D:\mongo_data\db  数据库文件夹路径

4、mongo,服务器端口号:27017

>>nodejs + mongo 必须有驱动

>安装mongodb

>连接数据库

增删改查:

//文档插入

MongoClient.connect(url,(err,client)=>{

if(err) return console.error("链接发生错误");



// console.log("链接成功");



let db = client.db("lily");

let collections = db.collection("hello");



//插入数据

collections.insertMany([{a:1},{b:2},{c:3}],(err,result)=>{

// console.log(result);

})



//修改数据

collections.update({a:1},{$set:{a:10}},(err,result)=>{

// console.log(result);

})



//删除数据

collections.deleteMany({a:10},(err,result)=>{

})



// 查询数据

collections.find().toArray((err,data)=>{

console.log(data);

})

//可以进行分页查询的

// collections.find().skip(1).limit(1).toArray((err,data)=>{

// console.log(data);

// })



client.close();

})

>>导入json数据

1、在bin目录下运行终端,输入 mongoimport --db lily--collection lily1 --type json --file F:\JS\lever3\lily\1026\douban\data.json

2、成功后执行mongo

3、查询数据表里书否存在这个数据  db.lily1.find().pretty()

4、查询数据表里有几条数据 db.lily1.find().count()

mongo命令合集

查看数据库列表 $ Show dbs   检查数据库


创建数据库    $ use 数据库名称


创建集合     $ db.createCollection(“集合名”)   // 集合 === 表

            >{ok:1}


查看集合(一定先进入对应数据库再进行查看)

            $ db.getCollectionNames()

            >[‘集合名']


插入数据     $ db.集合名.insertOne(数据集合({}json形式的数据)) // 文档 === 列

            >{

                "acknowledged" : true,   //是否插入成功

                "insertedId" : ObjectId("5aab2aaa93468a71aec836ce”)//插入的id

             }

查看数据    $ db.music.find() 查看数据库中的数据

           > 

            { "_id" : ObjectId("5aab2aaa93468a71aec836ce"), "title" : "回娘家" }

            { "_id" : ObjectId("5aab2b5e93468a71aec836cf"), "title" : "再见理想" }


Help命令 


db.help()   //db下的指令


db.test.help(); // db.test 下的所有指令


db.test.find().help(); //db.test.find下的所有指令


………强大的help指令


使用数据库


use  数据库名


查询数据陆


show dbs


查看当前使用的数据库


db/db.getName();


显示当前的数据库状态


db.stats();


查看当前db的版本


db.version();


查看数据库连接地址;


db.getMongo()


删除数据库


db.dropDatabase() 


tip:删除当前使用的数据库。


集合(collection)操作


1.创建


createCollection(“collName”,{size:20,cappeu:true,max:10})


2.得到指定名称的集合 


db.getCollection(“account”)


3.得到当前db所有的集合;


db.getCollectionNames()


4.显示当前db所有集合状态


db.printCollectionStats();


5.删除集合


db.COLLECTION_NAME.drop();


集合数据操作(添加,修改,删除)update | updateMany()


1.添加 insert([,…]|{key:value,...})


db.users.save({name:”zhangsan”,”age”:25,sex:true})


2.修改 updata(条件({}))


db.users.update({age:25},{$set:{name:”changeName”}},false,true)


相当于sql语句的  update users set name = “changeName” where age = 25;


db.users.update({name:”Lisi”},{$inc:{age:50}},false,true)


相当于sql语句的  update users set age = age + 50 where name =“lisi”


db.users.update({name:”Lisi”},{$inc:{age:50},$set:{name:’hoho’}},false,true)


相当于sql语句的 : update users set age = age + 50 ,name = ‘hoho’ where name = “lisi"


3.删除


db.users.remove({age:132})

db.users.delete()

db.users.deleteOne()

db.users.deleteMany()

豆瓣api api.douban.com/v2/movie/top250

豆瓣数据的操作:


    获取到豆瓣的数据,然后将数据放入数据库之中。 


    查找对应数据;


db.movie.find(条件,显示内容)


db.movie.find({year:1994},{title:1,year:1,_id:0})//表示显示 title1 和 year1 _id不显示;


1.表示显示  0.表示不显示;

排序

根据评分排序:

db.movie.find({},{title:1,year:1,_id:0,'rating.average':1}).sort({'rating.average':-1})

条件判断:$gt 大于; $lt 小于; $gte 大于等于 $lte 小于等于;

db.movie.find({‘arting.average’:$gt:9.5},{title:1,year:1,_id:0,'rating.average':1}).sort({'rating.average':-1})

分类筛选:

$in 包含  $nin 不包含


db.movie.find({genres:{$in:["犯罪","剧情"]}},{title:1,year:1,_id:0,'rating.average':1}).sort({'rating.average':-1})

nodejs + mongo

链接数据库:

var MongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:27017/test";


MongoClient.connect(url, function (err, db) {

if (err) throw err;

console.log("数据库链接已创建!");

db.close();

});

创建数据库操作对象:

var dataBase = db.db("test");

dataBase.createCollection("coll",function(err,res){

if(err) throw err;

console.log("创建集合");

db.close();

})

数据库操作collection 

dataBase.collection("coll").insert({},()=>{



})

数据库查询操作:

dbo.collection("coll").find({}).toArray(function (err, result) { // 返回集合中所有数据

if (err) throw err;

console.log(result);

db.close();

});

数据库更新操作:

dbo.collection(“coll").update(whereStr, updateStr, function (err, res) {

    if (err) throw err;

        console.log("文档更新成功");

     db.close();

});

数据库删除操作:

dbo.collection("coll").deleteOne(whereStr, function (err, obj) {

    if (err) throw err;

    console.log("文档删除成功");

    db.close();

});

limt方法:

dbo.collection(“coll").find().limit(2).toArray(function (err, result) {

    if (err) throw err;

        console.log(result);

    db.close();

});

skip方法:

dbo.collection("site").find().skip(2).limit(2).toArray(function (err, result) {

    if (err) throw err;

    console.log(result);

    db.close();

});

删除集合

dbo.collection("test").drop(function (err, delOK) { // 执行成功 delOK 返回 true,否则返回 false

    if (err) throw err;

    if (delOK) console.log("集合已删除");

    db.close();

});
  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值