• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

[다시] db.employees.updateOne() 질문+{capped:true, size:10000}

20.03.17 21:32 작성 조회수 122

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글자로된 문자 또는 숫자로만 변경이 됩니다. 바꿀 문자 또는 숫자가 이전에 쓰여진 문자 또는 숫자의 갯수와 똑같아야지만 변경이 됩니다. 왜 그런건가요?

----------------------------------------------

db.createCollection("employees", {capped:true, size:10000}) 이렇게 설정을 하면, 위의 질문과 같은 현상이 나타납니다. 하지만, {capped:true, size:10000} 를 설정하지 않으면 저런 에러는 발생하지 않습니다. 

이유를 알고 싶습니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 설정을 말씀하신대로 해서, 제가 재현해봤는데요. 정상 동작합니다.

데이터베이스를 선택안하고, collection 명령을 하신것인지, PC마다 환경이 각각 달라서 생기는 문제인지, 혹시 capped가 다음 설정인데, size에 해당하는 공간이 없어서 이런 일이 일어나는 것인지, 일단 capped와도 관련 없고, 다음 4명령을 하면 정상동작해야 합니다. 감사합니다.

capped:true 최초 제한된 크기로 생성된 공간에서만 데이터를 저장하는 설정 (고성능, 저장공간차면 기존 공간 재사용, 일정시간만 저장하는 로그에 적합)

db.createCollection("test4", {capped:true, size:10000})

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

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

db.users.find()