mongodb非关系型数据库命令笔记

安装

 sudo apt-get install mongodb

首次启动数据库的时候

如果出现这个问题

输入这两个命令

关系型数据库与mongodb的对比

关系型数据库MongoDB说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据库记录行/文档
column 数据属性field列/字段/域
indexindex索引
primary keyprimary key主键
2、数据库
    use 数据库的名字
    查看数据库 show dbs  物理上存在的数据库
3、集合
    1)创建集合
    db.createCollection(集合的名字,[集合的大小])
    2)删除集合
    db.数据库名.drop()
    3)查看集合
    show collections

数据库的相关命令

db
查看当前数据库名称

show dbs
查看当前所有数据库的名称,物理意义上存在的数据库

use 数据库名字
1、切换数据库
2、如果切换的数据库不存在也不会直接进行创建,只有数据库中插入数据了,才真正的创建成功

db.dropDatabase()
删除当前数据库,但是如果数据库不存在,不会做任何操作
                       

数据库集合的相关命令

db.createCollection('集合名',[集合大小])   #集合大小可以不写

示例:db.createCollection('jihename')



show collections;





db.集合名.drop

数据库支持的数据类型

objectID文档的ID
string字符串,最常用的
boolean布尔值,true false
integer整数
double浮点数
arrays数组或者列表,将多个值对应存储到一条数据
object用于存储的文档
null存储Nu’ll
timestamp时间戳
date存储当前时间的

插入数据

db.集合名称.insert()

注意点:
1、集合的名称可以不创建,因为使用的过程中,直接创建
2、insert()如果id 重名,不能插入数据,id是objectid 标注的是唯一的物理位置
3、插入数据的过程中,id可以不指定,不指定的化由MongoDB直接分配唯一值,id的值也可以自己指定

更新数据

db.集合名称.update(
查询条件{定位到指定的数据,where},
更新操作,
是否将符合条件的数据全部更新

)
参数1:query查询条件,类似mysql中的where,起到定位筛选的作用
参数2:update更新的数据以及更新操作符
参数3:multi默认值是false,表示指更新符合条件的第一条数据,如果想更新多条符合条件的数据,需要设置成true
 全文档更新
 db.films.update({_id:ObjectId("5ecc6ffb67d56727d32cdbf3")},{name:'冰河世纪'})
 
 部分属性的更新 $set
 db.films.update({_id:ObjectId("5ecc6ffb67d56727d32cdbf3")},{$set:{name:'冰河世纪'}})
 
 修改符合条件的多条文档
 db.films.update({_id:ObjectId("5ecc6ffb67d56727d32cdbf3")},{$set:{name:'冰河世纪'}},{multi:true})


删除数据

db.集合名.remove(
筛选条件,
{
    justOne:false
}
)

注意点:
1、justOne这个参数,默认值是false,默认删除多条,如果希望删除一条,设置为true
2、删除全部内容:db.film.remove({})

查询

find()

db.集合名.find(查询条件)

案例:
db.集合名.find() 查找所有的数据

findOne()

db.集合名.findOne()将查询符合条件的第一条数据,展示出来

比较运算符

描述案例
等于{字段:数值}
不等于{字段:{$ne:值}}
大于{字段:{$gt:值}}
大于等于{字段:{$gte:值}}
小于{字段:{$lt:值}}
小于等于{字段:{$lte:值}}

逻辑运算符

db.films.find(
     {$or:
     	[{actor:'张国荣'},{name:'花木兰'},{age:{$gt:18}}],
     	
     name:
     '张一毛'
     }

)

描述语句
逻辑与关系默认的{字段:值,字段:值…}
逻辑或关系{$or:[{字段:值},{字段:值}…]}

支持正则

 db.films.find({name:{$regex:'^张'}})  #正则规则。以张开头。这是第一种写法

 db.films.find({name:/^张/})  #这是第二种写法

范围查找

db.films.find({$or:[{age:14},{age:18}]}) #等于14岁或者等于18岁的

db.films.find({age:{$in:[14,18]}})  #等于14岁和等于18岁的


查找年龄在18-28之间的
db.films.find({age:{$gt:18,$lt:28}})  #大于18小于28的

db.films.find({age:{$gte:18,$lte:28}})  #大于等于18小于等于28的

db.films.find({age:{$gte:18}})  #大于等于18岁的

自定义查询

db.films.find({$where:function(){return this.age>18}})

投影

类似select 字段1,字段2… from 表名

db.films.find({age:{ g t : 18 , gt:18, gt:18,lt:28}},{name:1,_id:0})
{ “name” : “张二毛” }

注意点:
1、在find 函数中,第二个参数是表示需要展示的字段
2、如果需要展示,将这个字段的值设置为1,不设置则代表的是不显示
3、_id默认是显示的,如果需要不展示,需要设置为_id:0

统计个数

> db.films.find().count()
18
> db.films.find({age:{$gt:18}}).count()
3
> db.films.count()
18
> db.films.count({age:{$gt:18}})
3

注意点:
1、db.集合名.count({条件})
2、db.集合名.find().count()

指定读取的文档的数目和位置

db.films.find().limit(5)
db.films.find().limit()


db.films.find().skip(2)

注意点:
1、limit的参数如果不写,说明展示的是当前结合中所有的文档
2、limit的参数指定,说明需要展示的具体数目
3、skip 表示的是越过的记录条数,默认值是0

去重操作

> db.films.distinct('name')
[ "花木兰", "霸王别姬", "卡丁车", "冰河世纪", "张一毛", "张三毛", "张二毛", "张四毛" ]
> db.films.distinct('name',{age:{$gte:18}})
[ "张一毛", "张二毛" ]

注意点:
1、distinct第一个参数是需要去重的字段名
2、第二个 参数是筛选条件

db.actors.aggregate([
    {$group:
    {
        _id:'$gender',
        count:{$sum:1},
        avgage:{$avg:'$age'}
        
    }
    
    } 
])
查询年龄大于16岁中人员中,男生和女生的个数
db.actors.aggregate([
    {$match:{age:{$gt:16}}},
    {$group:{_id:'$gender',count:{$sum:1}}}
    
])




for(i=0;i<100000;i++){
    db.actor.insert({name:'张'+i +'毛',age:i})
}


> db.actors.find().explain('executionStats')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南桥经不起秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值