Mongodb基本操作

mongodb介绍

1.什么是mongodb?

  • mongodb 是由c++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负荷的情况下,添加更多的节点,可以保证服务的性能
  • MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

三元素: 数据库、集合、文档

数据库是一个集合的物理容器
集合就是关系数据库中的表
文档对应着关系数据库中的行
1). 文档,就是一个对象,由键值对构成,是json的扩展Bson形式 {'name':'guojing','gender':'男’}

2). 集合:类似于关系数据库中的表,储存多个文档,结构不固定,如可以存储如下文档在一个集合中 {'name':'guojing','gender':'男'} {'name':'huangrong','age':18} {'book':'shuihuzhuan','heros':'108’}

3). 一个mongodb中可以建立多个数据库

4). 数据库:是一个集合的物理容器,一个数据库中可以包含多个集合

5). 集合:集合中可以存储多个文档
6). 文档:就是一个对象,由键值对构成,是json的扩展Bson(可以理解为在JSON的基础上添加了一些json中没有的数据类型)形式。 需要注意的是:

2.mongodb启动

1.启动

sudo service mongodb start
2.停止
sudo service mongodb stop
3.重置
sudo service mongdb restop
4.退出链接
exit/ctrl+c

3.数据库、集合相关操作

数据库基本命令

1.查看当前数据库

db

  1. 列出所有数据库

show dbs
3.切换数据库,如果不存在,则指向但不创建,直到插入数据或者创建集合时数据库才被创建
use 数据库名
4.查看当前数据库信息
db.stats()
5.删除数据库
db.dropDatabase()

集合的相关操作

1.创建集合

db.createCollection(name,options)

name是要创建的集合的名称
options是一个文档,用于指定集合的配置 选项​​参数是可选的,所以只需要到指定的集合名称

options参数:

capped 布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。

autoIndexId 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 false。

size 数值 (可选)为固定集合指定一个最大值.当文档达到上限时,会将之前的数据覆盖,单位为字节。如果 capped 为 true,也需要指定该字段。

max 数值 (可选)指定固定集合中包含文档的最大数量。

2.查看数据库集合

show collections

3.删除集合
db.集合名称.drop()

3.数据的增删改查

1.插入文档

  • 单条插入

db.集合名称.insert({文档})

查询全部文档

db.集合名称.find()

更新文档

  1. update() 方法用于更新已存在的文档

db.集合名称.update()

参数:

  • query : update的查询条件,类似sql update查询内where后面的。

  • update : update的对象和一些更新的操作符(如inc...)等,也可以 理解为sql update查询内set后面的

  • upsert : 可选,这个参数的意思是,如果不存在update 的记录,是否插入objNew,true为插入,默认是false,不插 入。

  • multi : 可选,mongodb 默认是false,只更新找到的第 一条记录,如果这个参数为true,就把按条件查出来多条记录 全部更新。

全文档更新


db.stu.update(
    {name:'赵文竹'},
    {name:'哈哈哈'}
)

指定属性更新,通过操作符$se


db.stu.update(
    {name:'赵文竹'},
    {
        $set:{name:'啦啦啦'}
    }
)

修改多条匹配到的数据

db.stu.update(
    {name:'赵文竹'},
    {
        $set:{name:'啦啦啦'}
    },
    {multi:true}
)

2.save() 方法通过传入的文档来替换已有文档,如果文档的_id已经存在则修改,不存在则添加

db.stu.update(
    {name:'赵文竹'},
    {
        $set:{name:'啦啦啦'}
    }
)

pretty()

该函数,讲数据以格式化的方法展示

db.集合名称.find().pretty()

删除文档

db.集合名称.remove(document)

remove()方法基本格式:

db.collection.remove(
,
{justOne: ,}
)

参数说明
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。

基本的数据查询

查全部

db.集合名称.find({条件文档})

查一个

db.集合名称.findOne({条件文档})

比较运算符

等于,默认是等于判断,没有运算符
小于lte
大于gte
不等于$ne

例:查询年龄大于或等于18的学生

db.stu.find({age:{$gte:18}})

逻辑运算符

1.默认是逻辑与的关系

2.逻辑或使用$or

db.stu.find(
    {
        $or:[
            {age:{$gt:18}},
            {gender:1}
        ]
    }
)

3.and和or一起使用
例5:查询年龄大于18或性别为0的学生,并且学生的姓名为gj

db.stu.find(
    {
        $or:[
            {age:{$gte:18}},
            {gender:1}
        ],
        name:'gj'
    }
)

范围运算符

$in $nin判断是否在某个范围内

db.stu.find(
    {
        age:{$in:[18,28]}
    }
)

支持正则表达式

使用//或者$regex编写正则表达式

db.stu.find(
    {name:/^李/}
)
db.stu.find(
    {
        name:{$regex:'^李'}
    }
)

$type

获取某一种类型的数据,使用$type

db.col.find(
    {
        "title" : {$type : 'string'}
    }
)

limit 与Skip方法

limit() 方法 读取指定数量的数据记录

db.集合名称.find().limit(num)

Skip() 方法 使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。

db.集合名称.find().skip(num)

limit() 方法、Skip() 方法 同时使用,不分先后顺序 表示跳过多少条,返回多少条

sort() 方法排序

** sort() **方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

升序
db.集合名称.find().sort({排序字段:1})
降序
db.集合名称.find().sort({排序字段:-1})

注意: skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。

distinct() 去重

db.集合名称.distinct('去重字段',{条件})

例:查找年龄大于20的姓名(去重)
db.集合名称.distinct('name',{age:{$gt:20}})

project投影(可以指定想要返回的字段)

在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段

参数为字段与值,值为1表示显示,值为0不显示

db.集合名称.find({},{字段名称:0,...})

count() 统计个数

db.集合名称.count({条件})

表示返回集合中的文档数量

db.集合名称.find().count()
db.集合名称.find({条件}).count()

在count()函数中添加条件
例:统计年龄大于20的男生人数

db.集合名称.count(
    {
        age:{$gt:20},
        gender:1
    }
)

你可能感兴趣的:(Mongodb基本操作)