[MONGODB] MongoDB의 저장 위치와 삽입의 차이점은 무엇입니까?
MONGODBMongoDB의 저장 위치와 삽입의 차이점은 무엇입니까?
몽고 DB에 저장 및 삽입의 차이점은 무엇입니까? 모두 동일하게 보인다
db.users.save({username:"google",password:"google123"})
db.users.insert({username:"google",password:"google123"})
해결법
-
==============================
1.저장 대 삽입 :
저장 대 삽입 :
당신의 주어진 예에서, 동작은 기본적으로 동일합니다.
이에 "_id"매개 변수와 함께 전달 다른 경우 동작합니다 저장.
문서가 _id가 포함되어있는 경우, 그렇지 않은 경우, _id 필드 컬렉션을 조회 upsert 것, 저장, 그것은 삽입합니다.
업데이트 대 저장 :
업데이트는 검색어 매개 변수와 일치하는 기존 문서를 수정합니다. 그러한 일치하는 문서가없는 경우 upsert이 사진에 올 때, 그건.
저장 :합니까 어떤 쿼리 PARAMS을 허용하지. _id이 존재하고 같은 _id와 일치하는 문서가있는 경우, 그것을 대체합니다. 더 _id가 / 일치하는 문서를 지정하지 않을 때, 새와 같은 문서를 삽입합니다.
-
==============================
2.우리가 저장 여기 두 경우를 생각해 보자 : -
우리가 저장 여기 두 경우를 생각해 보자 : -
1) 문서에 _id 데.
2) 문서에 _ID 한하지 않습니다.
Save () / \ / \ Having _id Not Having _id ->In this case save will do -> It will do normal insertion upsert to insert.Now in this case as insert() do. what that means, it means take the document and replace the complete document having same _id.
우리가 삽입 여기 두 경우를 생각해 보자 : -
1) 문서의 컬렉션 _id 데.
2) 문서의 컬렉션 _id 가지고 있지.
Insert() / \ / \ Doc Having _id in collection Doc Not Having _id -> E11000 duplicate key ->Insert a new doc inside the collection. error index:
-
==============================
3.삽입 저장하거나 문서를 업데이트합니다.
삽입 저장하거나 문서를 업데이트합니다.
삽입은 삽입을한다.
저장에서 제공하는 문서가 어떤 _id 필드가 없습니다 그러나 귀하의 경우, 그것은 동일한 작업을 수행합니다.
-
==============================
4.예를 주어서
예를 주어서
애플 저장
db.fruit.save({"name":"apple", "color":"red","shape":"round"}) WriteResult({ "nInserted" : 1 }) db.fruit.find(); { "_id" : ObjectId("53fa1809132c1f084b005cd0"), "color" : "red", "shape" : "round", "name" : "apple" }
이전에 저장 한 사과의 _id와 사과를 저장
db.fruit.save( {"_id" : ObjectId("53fa1809132c1f084b005cd0"),"name":"apple", "color":"real red","shape":"round"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
이제 저장 한 사과, 색상은 실제 빨간색 빨간색에서 업데이트 된
db.fruit.find(); { "_id" : ObjectId("53fa1809132c1f084b005cd0"), "color" : "real red", "shape" : "round", "name" : "apple" }
_id 사과를 저장
db.fruit.save({"_id" : ObjectId("55551809132c1f084b005cd0"), "name":"apple", "color":"real red","shape":"round"}) WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id": 55551809132c1f084b005cd0 })
업데이 트를 할 수있는 동일한 개체 ID를 가진 사과가없는 애플 삽입있어
오렌지를 삽입
db.fruit.insert({"name":"orange", "color":"orange","shape":"round"}) WriteResult({ "nInserted" : 1 })
오렌지 삽입
db.fruit.find(); { "_id" : ObjectId("53fa1809132c1f084b005cd0"), "color" : "real red", "shape" : "round", "name" : "apple" } { "_id" : ObjectId("53fa196d132c1f084b005cd7"), "color" : "orange", "shape" : "round", "name" : "orange" } { "_id" : ObjectId("55551809132c1f084b005cd0"), "color" : "real red", "shape" : "round", "name" : "apple" }
그래서 개체 ID가 이미 삽입을 수행 현명 다른 존재 제공, 오브젝트 ID와 함께 제공되는 경우 업데이트로 역할을 저장합니다.
-
==============================
5.이전에 같은 수집에 사용 된 ID와 "삽입"을 사용하려고하면 당신은 중복 키 오류가 발생합니다. 같은 컬렉션 이미 ID로 "저장"을 사용하는 경우, 그것은 업데이 트됩니다 / 덮어 씁니다.
이전에 같은 수집에 사용 된 ID와 "삽입"을 사용하려고하면 당신은 중복 키 오류가 발생합니다. 같은 컬렉션 이미 ID로 "저장"을 사용하는 경우, 그것은 업데이 트됩니다 / 덮어 씁니다.
당신이 진정한 갱신을 찾고 있다면 나는 "갱신"을 사용하는 것이 좋습니다 것입니다. 업데이트는 저장 당신이 컬렉션에 이미 동일한 ID를 사용하여 저장하는 것인지 방법으로 덮어 쓰지 않습니다.
예를 들어, 당신은 두 개의 필드 "X"와 "Y"가 당신은 모두를 유지하지만, "X"의 값을 변경하고 싶습니다. 당신이 "저장"명령을 선택하고 한 경우 이전 값으로 Y를 포함하지 또는 저장 한 후 y는 더 이상 것 같은 값의 모든 y에이 있거나있을 수 없습니다. 당신이 $ 세트를 사용하여 업데이트 만 업데이트 문에 포함 된 X를 가지고하기로 결정하지만, 당신은 Y에 영향을주지 않습니다.
-
==============================
6.당신이 여기에서 볼 수 있듯이, 저장 방법은 (는 문서를 발견하면, 갱신, 그렇지 않으면 삽입) 본질적으로 upsert을 할 것입니다 :
당신이 여기에서 볼 수 있듯이, 저장 방법은 (는 문서를 발견하면, 갱신, 그렇지 않으면 삽입) 본질적으로 upsert을 할 것입니다 :
http://docs.mongodb.org/manual/reference/method/db.collection.save/#db.collection.save
삽입 그냥 직선 삽입합니다.
-
==============================
7.아래의 문서를 고려
아래의 문서를 고려
{ "_id" : 1, "domainName" : "test1.com", "hosting" : "hostgator.com" }
1, 다음 : DB는 이미 _id와 문서를 포함하는 경우
작업 저장 아래 같은 예외가 발생합니다
E11000 duplicate key error index ...........
어디에 삽입 작업으로, 단지 문서를 우선합니다.
-
==============================
8.오라클의 측면에서 : 몽고 삽입 => 오라클 삽입 몽고는 => 오라클 병합을 저장
오라클의 측면에서 : 몽고 삽입 => 오라클 삽입 몽고는 => 오라클 병합을 저장
-
==============================
9.DB.
.save (<문헌은>) InsertOrUpdate 조회에 상당한다. DB.
.save (<문헌은>) InsertOrUpdate 조회에 상당한다. 데시벨있다.
를 취소하려면 (<문헌은>) 바로 삽입 조회에 상당한다.
from https://stackoverflow.com/questions/16209681/what-is-the-difference-between-save-and-insert-in-mongo-db by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 합니까 MongoDB를 다시 연결 문제가 아니면 내가 잘못을하고있는 중이 야? (0) | 2019.12.21 |
---|---|
[MONGODB] CSV 파일로 몽고 쿼리의 리디렉션 출력 (0) | 2019.12.21 |
[MONGODB] 유성 : 내가 어떻게 백업 내 몽고 데이터베이스 (0) | 2019.12.21 |
[MONGODB] MongoDB를이 통합 프레임 워크를 사용하여와 그룹 수 (0) | 2019.12.21 |
[MONGODB] MongoDB의 스키마 디자인 - 많은 작은 문서 또는 적은 수의 큰 문서? (0) | 2019.12.21 |