mongodb入门

1、下载安装mongodb
2、在系统的根目录下创建一个data文件夹,在文件夹下创建一个db文件夹
3、制作.bat文件    ---  快速执行文件
新建一个txt文本文件  (data文件夹下)---- 注意字符编码集   ---- utf-8格式 --- 我得mongodb装载了D盘
d:
cd '.\Program Files\' 
cd .\MongoDB\
cd .\Server\
cd .\3.4\
cd .\bin\
mongod.exe --dbpath f:data/db
另存为startMongodb.bat
修改最后一行为
mongo.exe
另存为mongo.bat
4、先打开startMongodb.bat ----- 启动数据库
5、打来mongo.bat  --- 操作数据库
6、学习命令
数据库 office-access  sqlserver mysql oracle sqlite(手机中使用)
本地存储 cookie webStorage(localStorage/sessionStorage) websql indexedDB
cookie webStorage

mongodb
  非关系型数据库  insert/save  remove   update  find
sql
关系型数据库  insert  delete  update query(select)

术语介绍
 SQL            mongoDB说明
database database 数据库
table collection表/集合
row document行/文档
column field 字段(列)/域
index index索引
primary key     primary key 主键,mongdb中_id作为主键
7、数据库常用命令
1、help查看命令提示
help  常用的命令
db    显示当前的数据库的名称 --- 默认是test表
db.help()   显示当前数据库的所有的使用方法
db.test.help()   显示的是当前数据库下边的test集合(表)的所有的使用方法
db.test.find().help()  查询当前数据库下的test集合的所有的数据的方法
2、创建、切换数据库
use movies   无则创建并且切换,有则切换
db   ----- movies
注意:如果初次创建的数据库,并不能直接看到,你需要添加一些集合(表),意味着有了数据
添加一个集合
db.createCollection("movie"); 此时就可以在图形化工具中查看到这个数据库及其集合(表)
db.createCollection("collName", {size: 20, capped: true, max: 100});//一般不要设置
数据库集合的名称
显示当前所有数据库的名称
show dbs

use musics
db.createCollection("list")
show dbs 
图像化工具中创建了users数据库,并且添加了一个集合list
显示当前DB状态
db.stats() 
查看当前DB版本
db.version()
查看当前DB的链接机器地址
db.getMongo()
删除数据库
db.dropDatabase()   ----  删除了数据,未删除数据库
查询当前所使用的数据库
db.getName()   ---- 相当于db
8、插入数据    ----   增
1、插入单条数据
use movies
db.createCollection("elelist")
db.elelist.save({})   -----  插入单条数据   ----- 对象
db.elelist.insert({})  -----  插入单条数据 ----- 对象
2、插入多条数据
db.elelist.insertMany([{},{},{}])  -----  插入多条数据   ----- 数组对象

***
save insert  二者的区别?
***
9、查询数据 -----    查
查询集合中的所有的数据(包括所有的字段)
db.elelist.find()    ---  结果是没有使用任何符号相连接的,每一个对象又叫做一个document(文档----行)
{} {} {}
指定字段查询  ---  name字段
db.elelist.find({},{"name":1,"_id":0})
find 有两个参数,第一个为空对象,第二个为一个条件选项,需要的字段设置为1,不需要的设置为0,默认所有的数据都是1,一旦设置第二个参数,那么只有为1的字段和_id这个字段会出现,一般情况下会将_id字段设置为0
指定字段并且指定字段的值的查询
db.elelist.find({"name":"下午茶"},{"name":1,"_id":0})
查询到所有的name字段为下午茶的数据,并且只显示name字段

db.elelist.find({"name":"下午茶"})
查询到所有的name字段为下午茶的数据-----数据不易观察

db.elelist.find({"business_flag":1},{"_id":0,"name":1})
查询到所有的business_flag字段为1的数据,并且只显示name字段

查询business_flag字段的值大于为5的数据
db.elelist.find({"business_flag":{$gt:5}},{"_id":0,"name":1})
  ****  大于5的部分用对象实现,对象内部大于用$gt
  
查询business_flag字段的值小于为5的数据
db.elelist.find({"business_flag":{$lt:5}},{"_id":0,"name":1})
  ****  小于5的部分用对象实现,对象内部大于用$lt
  
查询business_flag字段的值大于等于为14的数据
db.elelist.find({"business_flag":{$gte:14}},{"_id":0,"name":1})
  ****  大于等于为14的部分用对象实现,对象内部大于用$gte
  
查询business_flag字段的值小于等于为14的数据
db.elelist.find({"business_flag":{$lte:14}},{"_id":0,"name":1})
  ****  小于等于为14的部分用对象实现,对象内部大于用$lte

查询business_flag为1“并且”name为美食的数据
db.elelist.find({"business_flag":1,"name":"美食"})
db.elelist.find({"business_flag":1,"name":"美食"},{"_id":0,"name":1})

查询business_flag为1“或者”name为美食的数据
db.elelist.find({$or:[{"business_flag":1},{"name":"美食"}]})
db.elelist.find({$or:[{"business_flag":1},{"name":"美食"}]},{"_id":0,"name":1})
***$or 对应的是数组,将每一个条件对象组成的数组作为$or所对应的值

查询business_flag值为5-14的数据
db.elelist.find({"business_flag":{$lte:14,$gte:5}},{"_id":0,"name":1})   })  })

查询去重后数据 business_flag 为1的数据   ----- 4个1
db.elelist.distinct("business_flag")
先将这个字段的值都取出来存到一个数组中,然后在数组去重--- [ 1, 14, 9, 10, 11, 18, 19 ]

查询name中包含"午"的数据 ---- 模糊查询
db.elelist.find({"name":/午/},{"name":1,"_id":0})

查询name中包含"午"的数据,并且午在开头 ---- 模糊查询
db.elelist.find({"name":/^午/},{"name":1,"_id":0})

查询 business_flag 排序后数据   
db.elelist.find({},{"business_flag":1,"name":1}).sort({"business_flag":1});   ---升序
db.elelist.find({},{"business_flag":1,"name":1}).sort({"business_flag":-1});  ---降序

查询前5条数据
db.elelist.find({},{"name":1,"_id":0}).limit(5)   ----   包括第5条数据

查询10条以后的数据
db.elelist.find({},{"name":1,"_id":0}).skip(10);    ---- 不包括第10条

查询在6-11之间的数据    ----  7 8 9 10 11   ----  分页数据(每一个显示10条数据)
db.elelist.find({},{"name":1,"_id":0}).limit(5).skip(6);
db.elelist.find({},{"name":1,"_id":0}).limit(10).skip(0 * 10);
db.elelist.find({},{"name":1,"_id":0}).limit(10).skip(1 * 10);
db.elelist.find({},{"name":1,"_id":0}).limit(10).skip(2 * 10);

查询第一条数据
db.elelist.findOne({},{"name":1,"_id":0});

查询某个结果集的记录条数   
db.elelist.find({},{"name":1,"_id":0}).count();    ----   14     -----商品的总数量(每页显示的个数,求出总共有多少页(向上取整  Math.ceil()))
db.elelist.find({"business_flag":1},{"name":1,"_id":0}).count();    ---4

按照某列进行排序计数   ----  所有的数据中包含有business_flag这个字段的数据的个数
db.elelist.find({business_flag: {$exists: true}}).count();     ---10
10、更新数据  ----    改
更新business_flag为14的数据,让他的name+1   ----- 新店特惠1
db.elelist.update({"business_flag":14},{$set:{"name":"新店特惠1"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
db.elelist.update({"business_flag":14},{$set:{"name":"新店特惠2"}},false)
false表示如果不存在不会插入
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
db.elelist.update({"business_flag":14},{$set:{"name":"新店特惠2"}},true)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
跟默认情况下是一致的,也就是update函数的第三个参数默认为true
db.elelist.update({"business_flag":2},{$set:{"name":"新店特惠22"}})
如果没有数据,相当于第三个参数设置为false
WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
db.elelist.update({"business_flag":2},{$set:{"name":"新店特惠22"}},true)
如果第三个参数为true,表示如果没有这一条数据,那么就会创建并且插入数据
WriteResult({
       "nMatched" : 0,
       "nUpserted" : 1,
       "nModified" : 0,
       "_id" : ObjectId("5965eb237804853b07edc881")
})
db.elelist.update({"business_flag":3},{$set:{"name":"新店特惠33"}},false)
WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
因为第三个参数设置为false,并且查询不到条件字段所对应的值的数据,所以不会插入新的数据

db.elelist.update({"business_flag":1},{$set:{"name":"更新的数据"}},false,true)
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })
将所有满足条件的数据的name值都改为了更新的数据

db.elelist.update({"business_flag":1},{$set:{"name":"美食"}},false,false)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
只更新第一条数据为美食

更新多条数据
db.elelist.update({"business_flag":1},{$set:{"name":"更新的数据"}},false,true)
WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })
将所有满足条件的数据的name值都改为了更新的数据

db.elelist.updateMany({},{$set:{"discount":0.3}})
{ "acknowledged" : true, "matchedCount" : 15, "modifiedCount" : 15 }
更新了15条数据,每一个条数据都添加了一个字段discount,值为0.3

需要将所有的business_flag的值都加1
db.elelist.update({},{$inc:{business_flag:1}},false,true)
WriteResult({ "nMatched" : 15, "nUpserted" : 0, "nModified" : 15 })
15条数据都加1操作   如果没有字段则添加了字段
需要将所有的business_flag的值都减1
db.elelist.update({},{$inc:{business_flag:-1}},false,true)
WriteResult({ "nMatched" : 15, "nUpserted" : 0, "nModified" : 15 })
db.elelist.update({},{$inc:{test:-1}},false,true)

11、删除数据  ----   删
删除单条数据
db.elelist.remove({name:"新店特惠22"})

db.elelist.update({"business_flag":2},{$set:{"name":"新店特惠22"}},true)

删除多条数据
db.elelist.deleteMany({"business_flag":2})

删除所有
db.elelist.remove({})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值