4, CRUD
mongo 데이터베이스는 일반적인 관계형 데이터베이스와 동일하며, 가장 기본적인 작업은 추가, 삭제, 수정, 확인이며 이름만 다를 뿐입니다.
SQL 용어/개념 | MongoDB 용어/개념 | 설명하다 |
---|---|---|
데이터 베이스 | 데이터 베이스 | 데이터 베이스 |
테이블 | 수집 | 데이터베이스 테이블/컬렉션 |
열 | 문서 | 데이터 레코드 라인/문서 |
열 | 필드 | 데이터 필드/필드 |
색인 | 색인 | 색인 |
테이블 조인 | 테이블 조인, MongoDB는 지원하지 않음 | |
기본 키 | 기본 키 | 기본 키, MongoDB는 자동으로 _id 필드를 기본 키로 설정합니다. |
4.1 문서 삽입
문서 삽입의 본질은 컬렉션에 데이터를 삽입하는 것으로 관계형 데이터베이스로 설명向数据表中插入数据
语法
#단일 삽입
db.collection_Name.insertOne(document)
#여러 삽입
db.collection_Name.insertMany([document])
예:
#单个插入
db.test1.insertOne({name:"mongo",type:1,value:1})
#多个插入
db.test1.insertMany([
{
name:"mysql",
type:2,
value:2
},{
name:"oracle",
type:3,
value:3
},{
name:"nosql",
type:4,
value:4
},{
name:"xiaoming",
sex:"男",
age:20,
address:"江苏省南京市浦口区××××××苑×××××单元×××××楼×××××××户"
}
]
)
# 查看集合中的文档
db.test1.find()
4.2 문서 업데이트
문서 업데이트의 본질은 문서의 데이터를 업데이트하는 것으로 관계형 데이터베이스로 설명된다.更新数据表中的数据
```구문:`
#한 줄 업데이트
db.test1.updateOne(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
#여러 행 업데이트
db.test1.updateMany(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
매개변수 설명
- query : SQL 업데이트 쿼리에서와 유사한 업데이트 쿼리 조건입니다.
- 업데이트 : 업데이트된 내용은 SQL 업데이트 쿼리 뒤에 있는 집합으로 이해할 수도 있습니다.
- upsert : 선택 사항, 기본값은 false입니다. 즉, 업데이트 조건이 존재하지 않을 때 삽입하지 않습니다. 삽입의 경우 true입니다. 즉, 업데이트 조건이 존재하지 않을 때 데이터를 삽입합니다.
- multi : 선택 사항, 기본값은 false이며 발견된 첫 번째 레코드만 업데이트됩니다. 이 매개변수가 true인 경우 조건에 따라 발견된 여러 레코드가 모두 업데이트됩니다.
- writeConcern : 선택사항, 발생한 예외 수준.
예:
-
삽입하지 않고 첫 번째 레코드 업데이트
db.test1.updateOne({name:"mongo"},{$set:{ type:99}})
- 기준과 일치하는 모든 문서를 삽입하지 않고 업데이트합니다.
db.test1.updateMany({name:"redis"},{$set:{
type:111}})
4.3 쿼리 문서
문서 쿼리의 본질은 관계형 데이터베이스로 해석할 수 있는 문서의 데이터를 쿼리하는 것입니다.查询数据表中的数据
语法
db.collection_name.find()
4.3.1 일반적인 쿼리
일반 검색어: 특정 조건에 따라 검색
예:
#查找集合中全部的文档
db.test1.find()
#查找名字为mongo的文档
db.test1.find({name:"mongo"})
#查找值为空的文档
db.test1.find({
value:null})
4.3.2 퍼지 쿼리
데이터베이스에서 데이터를 운용할 때 fuzzy lookup을 많이 사용하는데, fuzzy lookup은 mongo에서도 지원하는데 꼭 사용해야 한다.$regex
예
#查找名字中包含m的文档
db.test1.find({name:{$regex:/m/}})
#查找名字以m开头的文档
db.test1.find({name:{$regex:/^m/}})
4.3.3 조건 쿼리
데이터베이스에서 데이터를 운용할 때 조건부 검색을 자주 사용하는데 몽고에서도 조건부 검색을 지원한다.
예
#查询类型不为111的文档
db.test1.find({type:{$ne:111}})
#查询类型不为111且名字已m开头的文档
db.test1.find({
type:{$ne:111},name:{$regex:/^m/}})
#插叙名字为mongo或者type为空的文档
db.test1.find({
$or:
[
{name:"mongo"},
{
type:null}
]
})
#插叙名字为mongo或者type为空且value为1的文档
db.test1.find({
$or:
[
{name:"mongo"},
{
type:null}
],
value:1
})
4.4.4 프로젝션 쿼리
MongoDB의 프로젝션은 문서의 모든 필드를 직접 쿼리하는 대신 지정된 필드를 쿼리하는 것입니다. 1개의 표시가 표시되고 0개의 표시가 숨김
语法
db.ollection_name.find({
file:1,file2:0})
예
#插叙名字为mongo或者type为空且value为1的文档,要求只展示名字和类型
db.test1.find({
$or:
[
{name:"mongo"},
{
type:null}
],
value:1
},{_id:0,name:1,type:1})
4.4.5 쿼리 제한
mongo의 제한 쿼리는 쿼리되는 데이터의 양을 제한하는 것입니다.
语法
db.test1.find().limit(count)
매개변수 설명
개수: 제한할 항목 수
예:
#限制输出2条
db.test1.find().limit(2)
4.4.6 쿼리 건너뛰기
mongo의 점프 쿼리는 지정된 항목 수를 건너뛰고 조건을 충족하는 문서를 찾는 것을 말합니다.
语法
db.test1.find().skip(count)
매개변수 설명
개수: 건너뛴 항목 수
예
#跳过前两条
db.test1.find().skip(2)
#跳过前两条查找,并且返回3条数据,
db.test1.find().skip(2).limit(3)
#跳过前两条查找,并且返回3条数据
db.test1.find().limit(3).skip(2)
집계 쿼리에서 limit와 skip은 시퀀스 관계를 가집니다.
4.4.7 쿼리 정렬
쿼리 정렬은 쿼리 결과를 정렬하는 것을 의미하며, 여기서 1은 오름차순이고 -1은 내림차순입니다.
语法
db.COLLECTION_NAME.find().sort({
KEY:1})
예
db.test1.find().sort({name:-1})
4.4 문서 삭제
몽고에서 문서를 삭제한다는 것은 컬렉션의 데이터를 삭제하는 것을 의미합니다.
语法
단일 삭제
db.collection.deleteOne(filter, options)
다중 삭제
db.collection.deleteMany(filter, options)
매개변수 설명
- 필터 매개변수는 삭제해야 하는 문서 조건을 지정하는 데 사용됩니다.
- 옵션 매개변수를 사용하여 몇 가지 추가 옵션을 지정할 수 있습니다.
예
db.test1.deleteOne({
type:null})
db.test1.deleteMany({
type:null})