Mongoose에서 Model.findOne()과 Model.findById()의 차이점은 무엇입니까?
_id 값을 기반으로 MongoDB에서 문서를 검색한다고 가정합니다.다음 중 효율적인 코드는 무엇입니까?
ModelObj.findById(IdValue).exec(callback);
ModelObj.findOne({ '_id': IdValue}).exec(callback);
ModelObj.findById()가 효율적이라고 생각합니다만, 지원하는 이유는 무엇입니까? 또는 어떻게 효율적입니까?
findById
그것은 단지 편의 기능과 정확히 같은 것을 합니다.findOne
당신을 쇼라고 부릅니다.
출처는 다음과 같습니다.
Model.findById = function findById (id, fields, options, callback) {
return this.findOne({ _id: id }, fields, options, callback);
};
findById(id)
와 거의 동등합니다.findOne({ _id: id })
.
문서의 _id로 쿼리하려면 다음을 사용합니다.findById()
대신에findOne()
.
두 기능 모두 트리거findOne()
유일한 차이점은 그들이 어떻게 대하느냐입니다.undefined
.
사용하는 경우findOne()
알게 될 겁니다findOne(undefined)
그리고.findOne({ _id: undefined })
와 동등합니다.findOne({})
임의의 문서를 반환합니다.
하지만, 몽구스는 번역을 합니다.findById(undefined)
안으로findOne({ _id: null })
.
https://mongoosejs.com/docs/api.html#model_Model.findById 을 참조하십시오.
출처는 다음과 같습니다.
Model.findById = function findById(id, projection, options, callback) {
if (typeof id === 'undefined') {
id = null;
}
if (callback) {
callback = this.$wrapCallback(callback);
}
return this.findOne({_id: id}, projection, options, callback);
};
findById(id)는 find({_id:id}) 또는 findOne({_id:id})의 구문 설탕일 뿐입니다.
.findOne을 사용하면 데이터베이스는 각 bson 문서를 확인하여 관련 변수를 찾은 다음 값을 확인합니다. mongo가 내부 인덱스 _id 필드를 찾는 것을 알고 있다면 각 문서를 볼 필요가 없습니다.
언급URL : https://stackoverflow.com/questions/14255603/what-is-the-difference-between-model-findone-model-findbyid-in-mongoose
'programing' 카테고리의 다른 글
"ExtensionlessUrlHandler-Integrated-4.0" 처리기의 모듈 목록에 잘못된 모듈 "ManagedPipelineHandler"가 있음 (0) | 2023.05.03 |
---|---|
잠시 후의 휴식...웬드루프 (0) | 2023.05.03 |
PowerShell 또는 C#에서 프로세스에 대한 명령줄 정보를 가져오는 방법 (0) | 2023.05.03 |
UIImage장치의 실행 화면에서 누락된 이미지 보기 (0) | 2023.05.03 |
WPF: App.xaml의 목적은 무엇입니까? (0) | 2023.05.03 |