inserted_id 로 db에 값이 insert되었는지 확인 가능한데 update시에는 어떻게 확인 가능할까요?
371
작성한 질문수 90
어느 영상인지 잘 기억은 안나는데
insert 내용을 x 로 받아서
inserted_id 로 인서트가 잘되었는지 확인 하는 내용이 있었습니다.
x.inserted_id 이런식으로요
갑자기 update할때는 inserted_id 처럼 업데이트 되었는지 확인할수 있는 방법이 있는지
너무 궁금해져서 구글에 찾아보니, 딱히 방법이 보이지 않는데,
혹시 확인할수있는 방법이 있는지 궁금해서 선생님께 문의드립니다.
답변 1
1
insert는 1개의 쿼리에 1개의 데이터가 1:1로 저장되는 형식인데 반해 update의 기능을 생각해보면 update는 쿼리 1개의 대상이 1개가 될 수 있고 다수 개가 될 수도 있습니다. 그렇기 때문에 기본적으로는 insert처럼 inserted_id 같은 id값을 반환하지 않습니다.
https://www.mongodb.com/docs/manual/reference/method/db.collection.update/#returns
위 링크는 몽고DB공식 문서의 내용인데 내용을 보면 update 함수는 WriteResult 객체를 반환한다 되어있고 WriteResult를 다시 살펴보면
WriteResult({
"nMatched" : 1,
"nUpserted" : 0,
"nModified" : 1,
"writeConcernError": {
"code" : 64,
"errmsg" : "waiting for replication timed out",
"errInfo" : {
"wtimeout" : true,
"writeConcern" : {
"w" : "majority",
"wtimeout" : 100,
"provenance" : "getLastErrorDefaults"
}
}
})
위와 같은 형식으로 생긴것을 확인 할 수 있습니다. 그래서 update후에는 nMatched값이나 nModified값을 통해 몇개의 데이터가 적용되었는지 정도를 확인 할 수 있습니다.
업데이트 후 반드시 id값을 통해 데이터의 수정 여부를 확인해야 한다면 테스트 해보진 않았지만 updateOne(), updateMany()함수에서 upsert옵션을 사용하여 반환된 값에서 upserted_id를 통해 확인이 가능할 것 같긴한데 upsert 옵션은 쿼리의 대상이 없으면 insert를 하기 때문에 이점을 참고하셔야 할듯 합니다.
iis 접속후 자동으로 로그인 창이 나오도록 설정이 기능한가요?
0
67
2
리스트 이동 시 창 에러 발생
0
79
1
배포후 회원 등록 후 로그인 에러...
0
76
2
내부 서버 오류
0
72
2
app.config["MONGO_URI"] = "mongodb://localhost:27017/pm_db"
0
55
2
DB 검색하면 데이터가 없습니다. 라고 나와요. 5시간을 찾아봐도 모르겠어서 문의드려봅니다.
0
51
1
몽고db studio3T를 깔았는데
0
57
2
flake8과 linter
0
75
3
500이 뜹니다.
0
59
2
첨부파일 삭제
0
67
2
검색기능 질문
0
63
2
google.py
0
67
2
Studio 3T에 DB insert가 되지 않는 문제를 해결하지 못하고 있습니다 ㅠ
0
85
3
혹시 전체 코드 공개되어 있나요?
0
97
1
join.html 의 form 태그값 을 member_join() 에서 처리못함.
0
105
1
google.py 몽고db 샘플데이터 만들기
0
101
2
flake8 설치 이후 명령팔레트에서 linter가 안보입니다.
0
239
2
파이썬으로 만들어서 웹호스팅에 올릴경우
0
305
1
현재 구글검색 무한스크롤변경 문의합니다
0
299
1
몽고디비아틀라스로 추가 공부해서 올립니다.
0
218
1
IIS 500.19에러
0
664
2
버전 문제도 수정했는데 결과가 안나옵니다.
0
258
1
데이터베이스 저장관련 질문입니다.
0
272
1
test가 생기지 않습니다.
0
513
3





