MongoDB概念增删改查

mongoDB
    MongoDB介绍
        概念
            面向文档的数据库,底层用C++编写,是一个开源的数据库系统
            将数据存储为文档、数据结构为:键值对(key value){name:‘小红’}
            储存模式是json类似是json的bson的格式
        主要特点
            提供一个面向文档的存储方式,操作起来比较简单容易
            支持丰富的查询表达式,可轻易地查询文档内嵌和数组、对象
            支持各种的编程语言(ruby/python/jave/c++/php/c#{chap})
            安装起来比较简单
        数据库文档
            与mysql不同,mongodb不需要固定的表结构
            非关系型数据库中的数据保存在文档内,采用Bson类型的数据来进行存储
            每个数据库下都可以有多个集合,每个集合下有多个文档
        数据库存储的结构
            每个文档都有键值对(key value)来储存
            每个文档可以存储多个键值对,ID唯一
            每个数据库下可以有多个集合,每个集合下有多个文档
        mongodb语言(非sql语言)
            是由国际标准委员会定义的,但不同的数据库采用的语言会有不同的差异
            区分大小写,语句不用分好结尾,语句可以写一行,也可以写多行,驼峰命名的相连单词第一个单词大写(首单词不大写)
        数据类型
            arrays ID
            Object ID
            自生成的_id()每个文档都有一个id标识
                0-8字是时间戳
                9-14字是机器标识;表示mongodb所在的机器不同
                15-18字是进程标识,表示相同机器的不同mongodb的进程
                19-24字节是计数器
                例子
                    {_id:1,name:'西门大官人',age:38,house:['beijing','shanghai','sjhenzhen']}
                        单个值
                    {_id:2,name:'韦小宝',age:18,wifi{beijing:'小红',shenzhen:'小绿'}}
                        键值对
        创建集合的相关参数
            capped
                设置为true,则创建固定集合,达到最大值时会覆盖最早的文档,默认false,固定集合内的文档限制较多
            autoindexid
                设置为true时,自动在_id字段创建索引,默认为false
            size
                指定固定集合中包含文档的最大数值
    数据库
        创建数据库
            创建数据库时,如果里边没有集合,mongodb只会将数据库临时放在内存中,只有当里边有了集合,才会保存下来
            使用use时,如果数据库不存在,则创建新的数据库,如果已有数据库,则切换至已有数据库
            概要
                use 库名
                    有库直接使用
                use new库名
                    没有库创建新库
                db.creatCollection('集合名')
    插入insert
        创建集合
            use 库名
            db.creatCollecction('集合名')
        插入insert
            插入单条
                db.库名.insert([
{_id:1,name:"艾斯",age:99},
{_id:2,name:"杰克",age:100}
])
            插入多条
                db.库名.insert([{_id:6,name:"大娃",age:100},{_id:7,name:"二娃",age:100},{_id:8,name:"三娃",age:100},{_id:9,name:"四娃",age:100}])
        插入一条带array的文档
            db.库名.insert({_id:4,name:"聪哥",age:60,house:["beijing","tianjin","mosike","wukelan"]}) (单个值)
        插入一条带object的文档
            db.库名.insert({_id:5,name:"韦小宝",age:18,wife:{"beijing":"双儿","shenzhen":"建宁公主","yunnan":"龙儿"}}) (键值对)
    修改/更新文档update
        使用:update()
query:更新的条件,类似mysql的where,多个条件可以逗号并列
update:更新的内容
options:multi参数:设置为true时表示多条文档更新,false代表符合条件的第一条文档更新,不写multi,代表默认为false。
            更新单条文档
                update参数内的文档直接覆盖原来的文档,且_id不变
                    把name为二娃的文档改为年龄是101的文档
                    db.库名.update({name:"二娃"},{age:101})
            更新多条文档
                把age为100岁的名字改为五娃
                db.库名.update({age:100},{$set:{name:"五娃"}},{multi:true})
        修改器$set/$unset
            $set: 用来指定一个字段,如果这个字段不存在,则创建它。
                $set增加不存在的字段
                    db.库名.update({age:100},{$set:{address:"葫芦山"}},{multi:true})
                $set增加年龄为100岁的文档内的address字段
                    db.库名.update({age:100},{$set:{address:"葫芦山"}})
                指定多条件满足的文档更新。
                    db.库名.update({name:"五娃",age:99},{$set:{address:"葫芦山"}})
            $unset:将指定的字段删除。
                db.库名.update({age:100},{$unset:{address:"葫芦山"}},{multi:true})
db.teacher.update({age:100},{$unset:{address:1}})
    保存save()
        save()方法保存文档时,看是否指定_id,如果指定了_id且之前文档有相同的_id则直接覆盖,如果没有指定_id,或者_id没重复,则会新增一条文档
            指定id且不重复
                db.库名.save({_id:12,name:"钢铁侠",age:40,like:["洗脚","开车","模特"]})
            不指定id
                db.库名.save({name:"钢铁侠",age:40,like:["音乐","机车","喷漆"]})
            指定id且id重复直接覆盖
                db.库名.save({_id:1,name:"钢铁侠",age:40,like:["音乐","机车","买房"]})
    删除remove
        删除指定单条件的文档,如果多个文档都满足则全部删除
            db.库名.remove({name:"钢铁侠"})
        删除指定多条件满足的文档。
            db.库名.remove({name:"五娃",age:99})
        删除全部文档
            db.库名.remove({})
    查询find()
        查询集合内所有的文档
            db.库名.find()
            查询集合内指定字段的值
                单字段查询
                    db.库名.find({},{name:true})
                多字段查询
                    db.库名.find({},{name:true,age:true})
        条件查询
            运算符$gt/$lt/$gte/$lte/$ne
                大于:$gt
                    查询年龄大于30岁的文档
                    db.库名.find({age:{$gt:30}})
                小于:$lt
                    查询年龄小于10岁的文档
                    db.库名.find({age:{$lt:10}})
                大于等于:$gte
                    查询年龄大于等于30岁的文档
                    db.库名.find({age:{$gte:30}})
                小于等于:$lte
                    查询年龄小于等于10岁的文档
                    db.库名.find({age:{$lte:10}})
                不等于:$ne
                    查询年龄不等于10岁的文档
                    db.库名.find({age:{$ne:10}})
                返回查询结果的前3条数据
                    db.库名.find().limit(3)
            多条件查询
                and条件查询
                    db.库名.find({age:5,name:'小灰灰'})
                or条件查询
                    db.库名.find({$or:[{age:5},{address:'青青草原'}]})
        升降序排列
            升序:1
                db.库名.find().sort({age:1})
            降序:-1
                db.库名.find().sort({age:-1})
            linit对升序降序的排序
                查询年龄最大的文档
                    db.shuai.find().sort({age:-1}).limit(1)
        查询结果的统计
            db.库名.find().count()
                返回指定行数
            查询年龄小于等于30岁的文档
                db.库名.find({age:{$lt:30}})
            查询年龄年龄大于20岁,不在青青草原的数量
                db.库名.find({age:{$lt:20}.})
        模糊查询
            查询name中包含羊的文档
                db.库名.find({name:/羊/})
            查询name中以美开头的文档
                db.库名.find({name:/^美/})
    去重distinct
        去重,字段名必须加引号
            db.库名.distinct('address')
        单字段排除查询
            db.库名.find({},{name:false})
        多字段排除查询
            db.库名.find({},{name:false,age:false})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值