mongodb数据库入门
1. mongod介绍
- mongodb是一种NoSQL数据库,目前NoSQL数据库种类繁多, 但是?个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系。
- mongodb的优势
- 易扩展
- 大数据量、高性能
- 灵活的数据模型,不再需要事先建立数据字段
2. mongodb安装
Windows: https://blog.csdn.net/qq_40846669/article/details/120050948.
Linux(ubuntu): https://blog.csdn.net/qq_40846669/article/details/120059229.
3. mongodb基本操作
3.1 数据库操作 【增删改查数据库】
- 查看所有数据库
show dbs 或者使用show databases
-
进入具体数据库(新建数据库)
-
查看当前所在数据库
-
db -
删除当前数据库
db.dropDatabase() 这里db指当前使用的数据库,即删除当前使用数据库 -
清空终端
3.2 数据集合操作
-
查看数据集合
-
show collections -
删除数据集合
-
db.数据名.drop() -
添加数据集合
- 自动创建集合:向不存在的集合中第?次加?数据时, 集合会被创建出来
- 手动创建结合:创建格式
db.createCollection(name,options)
- name:集合名字
- options:集合的参数,可以不指定
- 这里的capped参数表示是否指定上限大小,size指定大小,如果存储内容超过上限则会覆盖
3.3 数据类型
Mongodb的数据类型
类型 | 含义 |
---|
Object ID | ?档ID | String | 字符串, 最常?, 必须是有效的UTF-8 | Boolean | 存储?个布尔值, true或false | Integer | 整数可以是32位或64位, 这取决于服务器 | Double | 存储浮点值 | Arrays | 数组或列表, 多个值存储到?个键 | Object | ?于嵌?式的?档, 即?个值为?个?档 | Null | 存储Null值 | Timestamp | 时间戳 | Date | 存储当前?期或时间的UNIX时间格式 |
扩展
- 在mongodb中,每个?档都有?个属性, 为_id, 保证每个?档的唯?性。
- 可以??去设置id插??档,如果没有提供, 那么MongoDB为每个?档提供了?个独特的id, 类型为objectID
- objectID的组成
- 前4个字节为当前时间戳
- 接下来3个字节的机器ID
- 接下来的2个字节中MongoDB的服务进程id
- 最后3个字节是简单的增量值
3.4 数据操作【插入,简单查询,更新,删除】
- 插入和简单的数据查询操作
- 如果使用的集合不存在则会自动创建
db.集合名.insert() db.集合名.find() - 如果插入相同id的数据则或报错
-
如果使用命令db.集合名.save()
-
更新操作
-
db.集合名.update(<query> ,<update>,{multi: <boolean>})
- 参数query:查询条件
- 参数update:更新操作符
- 参数multi:可选, 默认是false,表示只更新找到的第?条记录, 值为true表示把满?条件的?档全部更新
-
将查询到的第一条name:"xiaohong"的数据替换为name:“lisi”
-
删除操作
db.集合名称.remove(<query>,{justOne: <boolean>})
- 参数query:可选,查询条件
- 参数justOne:可选, 如果设为true, 则只删除?条, 默认false, 表示删除多条
- 将所有name="zhangsan"的数据都删除
4. mongodb条件数据查询
数据查询方法db.集合名.find()
-
条件查询
-
带有运算符的条件查询
-
使用正则表达式
- 举例, 查询名字以zhang开头的人,两种写法
- ①使用
/表达式/ 字符串不再加“” ,db.test10.find({name:/^zhang/}) - ②KaTeX parse error: Expected '}', got 'EOF' at end of input: …10.find({name:{regex:"^zhang"}})`
-
limit和skip
- limit(n),与mysql类似,查询n条信息
- skip(n),跳过n条信息
- limit(n).skip(m)效果与skip(m).limit(n)相同,都是跳过m条再查询n条
-
投影
db.集合名称.find({},{字段名:1,...}) - 将想显示的字段写上并加:1
- 举例显示name,显示name但不显示id
db.test10.find({},{name:1}) , db.test10.find({},{name:1,_id:0}) - 注意第一个{}必须有
-
排序
db.集合名称.find().sort({字段:1,...})
- 字段:1,按字段升序排列。
- 字段:-1,按字段降序排列
- 举例按age升序排列,
db.test10.find().sort({age:1}) -
计数
db.集合名.find({查询条件}).count() -
消除重复
db.集合名.distinct('去重字段',{查询条件})
|