• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

db.employees.updateOne() 질문

20.03.16 20:20 작성 조회수 115

0

질문 1. 

db.employees.updateOne() or db.employees.updateMany()로 document안의 field의 value의 type을 어떻게 바꾸는가요? 예를들어 name: 'sue'는 type이 string인데, name: 100 인 type이 int인것으로 변경하려는데 에러가 뜹니다. 어떻게 바꾸나요?

질문2. 

db.employees.updateOne() or db.employees.updateMany() 에서 value를  바꿀때, 기존에 입력된 value가 3글자이면, 3글자로된 문자 또는 숫자로만 변경이 됩니다. 바꿀 문자 또는 숫자가 이전에 쓰여진 문자 또는 숫자의 갯수와 똑같아야지만 변경이 됩니다. 왜 그런건가요?

답변 1

답변을 작성해보세요.

0

안녕하세요.

질문1:

몽고db는 타입을 따지지 않습니다. 정상적인 명령이라면 update 명령이 정상적으로 동작합니다.

예를 들어, 다음과 같이 명령했을 때 정상적으로 name이 100으로 변경됩니다. 

db.users.insertOne({name:'sue', age:26, status:'pending'})

db.users.updateOne({ age:26 }, { $set: {name:100}})

db.users.find()

질문2:

이것도 마찬가지인데요. 글자수를 따지거나 하지도 않습니다. 다음과 같이 했을때, name은 3글자이지만, 변경된 name은 7글자로 문제없이 변경됨을 확인할 수 있습니다.

db.users.insertOne({name:'sue', age:27, status:'pending'})

db.users.updateOne({ age:27 }, { $set: {name:'davelee'}})

db.users.find()

혹시 업데이트 문의 조건을 잘못 쓰셔서, 다른 에러가 나는 것이 아닐까 생각이 되는데, 한번 확인해보시면 좋을 것 같습니다.