MongoDB / Mongoose가 null 또는 정의되지 않은 인수가있는 쿼리를 찾아 모든 문서를 반환하는 이유는 무엇입니까?

루우 레반

API는 특정 매개 변수를 사용하여 MongoDB에서 동일한 데이터를 요청합니다. 하지만 쿼리 매개 변수가 null이거나 정의되지 않은 경우 문서를 반환하고 싶지 않습니다. 반대로 MongoDB는 모든 문서를 반환 합니다 . 왜 그리고 이것이 정상입니까?

await exampleModel.find({}).lean().exec()        // return all docs. That's okay.
await exampleModel.find(null).lean().exec()      // return all docs. That's weird.
await exampleModel.find(undefined).lean().exec() // return all docs. That's weird.
Ionică Bizău

예, 이것은 정상 입니다. MongoDB 는 매개 변수를 {}전달 null하거나 undefined전달하지 않을 ( ) 기본적으로 빈 필터 ( ) 를 사용합니다 foo.find(). 어쨌든 filterprojection(두 번째 매개 변수)는 선택 사항입니다.

query: 쿼리 연산자를 사용하여 선택 필터를 지정합니다. 컬렉션의 모든 문서를 반환하려면이 매개 변수를 생략하거나 빈 문서 ({})를 전달하십시오.

projection: 쿼리 필터와 일치하는 문서에서 반환 할 필드를 지정합니다. 일치하는 문서의 모든 필드를 리턴하려면이 매개 변수를 생략하십시오.

쿼리가 null이거나 정의되지 않은 경우 아무것도 반환하지 않으려면 다음과 같이 작성할 수 있습니다.

const results = query ? await exampleModel.find(query).lean.exec() : []        

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관