67 lines
2.5 KiB
Markdown
67 lines
2.5 KiB
Markdown
---
|
|
title: 2.0、数据库基本操作
|
|
date: 2017-12-15 18:36:30
|
|
tags:
|
|
- 数据库
|
|
- MongoDB
|
|
categories:
|
|
- MongoDB
|
|
---
|
|
|
|
mongoDB当中也存在数据库和表的划分
|
|
但是这里的一个表可以看做是一个集合
|
|
里面可以容纳各种结构的数据x
|
|
每一条数据的结构可以各不相同
|
|
<!-- more -->
|
|
### 基本信息
|
|
+ `show dbs` 查看数据库列表
|
|
+ `show collections` 显示当前数据库当中的集合( 类似于关系型数据库中的表 )
|
|
+ `show users` 显示用户
|
|
+ `use 数据库名称` 切换数据库
|
|
+ `db.createCollection('集合名称')` 创建集合
|
|
mongoDB没有创建数据库的命令
|
|
可以直接使用use 数据库名称 切换数据库 , 然后创建任意一个集合 , 这个数据库就会自动创建
|
|
+ `db.dropDatabase()` 删除当前正在使用的数据库
|
|
+ `db.集合名称.drop()` 删除当前数据库的指定集合
|
|
|
|
|
|
### 插入数据
|
|
首先切换到需要使用的数据库 , 然后执行
|
|
```
|
|
db.<集合名称>.insert(数据)
|
|
```
|
|
这里的数据是json结构
|
|
执行插入数据过后
|
|
数据当中会自动生成一个主键_id属性 , 全局唯一
|
|
|
|

|
|
这个属性值也可以在插入数据的时候指定
|
|
|
|
执行的命令当中也可以使用流程控制的语法
|
|
比如`for(i=0;i<20;i++)db.集合名称.insert({"x":i}) `
|
|
( 属性名也可以不加双引号 , 因为它一定是字符串 , 下同 )
|
|
|
|
修改数据
|
|
```
|
|
db.集合名称.update(筛选条件,新数据,[是否新增],[是否批量更新])
|
|
```
|
|
+ 筛选条件和新数据都是json形式的 , 是必填参数
|
|
+ 第三个参数是可选的 , 当筛选条件没有匹配到任何数据的时候 , 是否将新数据插入到集合当中 , 默认是false
|
|
如果省略第三个参数 , 或者传入false , 那么当筛选条件没有匹配到数据
|
|
该函数不会有任何效果
|
|
+ 第四个参数是可选的 , 表示当该筛选条件匹配到多条数据时 , 是否更新全部 , 默认为false ( 目的是为了防止批量覆盖数据的误操作 ) , 当该参数使用true的时候 , 必须使用$set操作符进行部分数据的更新操作 , 具体方式下面有介绍
|
|
例如
|
|
**db.demo.update( {x:1}, {x:99} )**
|
|
|
|
> 直接使用上述方式会覆盖整条数据的内容
|
|
如果要修改数据的部分内容
|
|
比如有如下数据 : { "x":10 , "y":10 , "z":10 }
|
|
可以使用$set操作符
|
|
例如 db.demo.update( {x:10}, {$set : {y:20} } )
|
|
这样只会修改y的值 , x和z的值都不变
|
|
|
|
### 数据删除
|
|
```
|
|
db.集合名称.remove(筛选条件)
|
|
```
|
|
为了防止误操作 , 筛选条件是必填的 |