Deprecation Warnings (지원중단 경고)목록_(remove(), update(), count())
https://www.npmjs.com/package/mongodb
mongodb
The official MongoDB driver for Node.js. Latest version: 5.1.0, last published: 8 hours ago. Start using mongodb in your project by running `npm i mongodb`. There are 11529 other projects in the npm registry using mongodb.
www.npmjs.com
Mongoose 사용자가 알아야 할 MongoDB Node.js 드라이버에는 몇 가지 지원 중단이 있다.
remove()
MongoDB 드라이버의 remove() 함수 대신 deleteOne() 및 deleteMany()를 사용한다.
이는 모든 MongoDB 드라이버에서 CRUD 작업을 위한 일관된 API를 제공하는 것을 목표로 하는 MongoDB CRUD 사양을 준수하기 위한 것이다.
이 사용 중단 경고를 제거하려면 remove()에 대한 단일 옵션을 지정하지 않는 한 remove()의 사용을 deleteMany()로 바꾸어야 한다.
단일 옵션은 remove()를 최대 하나의 문서 삭제로 제한하므로 remove(filter, { single: true })를 deleteOne(filter)으로 바꿔야 한다.
// 지원중단 경고코드
MyModel.remove({ foo: 'bar' });
// 대체코드
MyModel.deleteMany({ foo: 'bar' });
// 지원중단 경고코드
MyModel.remove({ answer: 42 }, { single: true });
// 대체코드
MyModel.deleteOne({ answer: 42 });
- remove()를 단일 옵션을 지정하지 않았다면 deleteMany()로 변경
- remove()를 단일 옵션을 지정({ single: true })했다면 deleteOne()로 변경
update()
update() 함수는 더 명확한 updateOne(), updateMany() 및 replaceOne() 함수를 위해 더 이상 사용되지 않는다.
다중 또는 덮어쓰기 옵션을 사용하지 않는 한 update()를 updateOne()으로 바꿔야 한다.
// 지원중단 경고코드
MyModel.update({ foo: 'bar' }, { answer: 42 });
// 대체코드
MyModel.updateOne({ foo: 'bar' }, { answer: 42 });
// "overwrite: true"를 사용하는 경우 다음 대신 "replaceOne()"을 사용해야 한다.
MyModel.update(filter, update, { overwrite: true });
// 대체코드
MyModel.replaceOne(filter, update);
// "multi: true"를 사용하는 경우 대신 "updateMany()"를 사용해야 한다.
MyModel.update(filter, update, { multi: true });
// 대체코드
MyModel.updateMany(filter, update);
- update()를 다중 또는 덮어쓰기 옵션을 사용하지 않는 경우 updateOne로 변경
- update()를 덮어쓰기 옵션을 사용하는 경우({ overwrite: true}) replaceOne()로 변경
- update()를 다중옵션을 사용하는 경우({ multi: true})일때는 updateMany()로 변경
count()
MongoDB 서버는 두 개의 별도 함수인 countDocuments() 및 estimateDocumentCount()를 위해 count() 함수를 더 이상 사용하지 않는다.
둘 사이의 차이점은 countDocuments()가 find()와 같은 필터 매개변수를 허용할 수 있다는 것이다.
estimateDocumentCount() 함수는 더 빠르지만 컬렉션에 있는 총 문서 수만 알려줄 수 있다.
estimateDocumentCount()에 필터를 전달할 수 없다.
마이그레이션하려면 count()에 인수를 전달하지 않는다면 count()를 countDocuments()로 바꾼다.
쿼리와 일치하는 문서를 세는 대신 count()를 사용하여 컬렉션의 모든 문서를 세는 경우 estimateDocumentCount()를 사용한다.
// 지원중단 경고코드
MyModel.count({ answer: 42 });
// 대체코드
MyModel.countDocuments({ answer: 42 });
// 컬렉션에 있는 모든 문서를 세는 경우 (인수가 없을 경우)
MyModel.count();
// 대체코드
MyModel.estimatedDocumentCount();
// 지원중단 경고코드
MyModel.find({ answer: 42 }).count().exec();
// 대체코드
MyModel.find({ answer: 42 }).countDocuments().exec();
// 지원중단 경고코드
MyModel.find().count().exec();
// 대체코드 (find에 필터가 없기때문에)
MyModel.find().estimatedDocumentCount().exec();
- count()를 전체 컬렉션(필터 있음)에 있는 문서 수를 계산하려는 경우가 아니면 countDocuments()로 변경
- count()를 전체 컬렉션(필터 없음)에 있는 문서 수를 계산하려는 경우 estimateDocumentCount()로 변경
정리
1. remove()를 deleteOne() 또는 deleteMany()로 교체
2. update()를 updateOne(), updateMany() 또는 replaceOne()으로 교체
3. count()를 countDocuments() 또는 estimateDocumentCount()로 교체
'데이터베이스 > MongoDB' 카테고리의 다른 글
[MongoDB] Read관련, 차이점 (0) | 2023.02.26 |
---|---|
[MongoDB] CRUD 관련 모음(Bulk포함) (0) | 2023.02.25 |
[Mongoose] Model (CRUD 관련) 모음 (0) | 2023.02.25 |
[MongoDB] 데이터 추출(페이지네이션), skip(), hasNext(), next() (0) | 2023.02.20 |
[MongoDB] Naver Cloud에서 MongoDB 데이터베이스 생성 (0) | 2023.02.15 |
댓글