source

필드가 존재하지 않거나 null이거나 false인 MongoDB 문서를 선택하십시오.

bestscript 2023. 2. 22. 22:30

필드가 존재하지 않거나 null이거나 false인 MongoDB 문서를 선택하십시오.

다음 문서를 포함하는 컬렉션이 있다고 가정합니다.

{ "_id": 1, name: "Apple" }
{ "_id": 2, name: "Banana", "is_reported": null }
{ "_id": 3, name: "Cherry", "is_reported": false }
{ "_id": 4, name: "Kiwi",   "is_reported": true }

"is_reported"가 거짓인 모든 문서(존재하지 않음, null 또는 false)를 선택하는 더 간단한 쿼리가 있습니까?즉, 키위가 아닌 애플, 바나나, 체리를 선택하는 쿼리입니다.

MongoDB FAQ에 따르면{ "is_reported": null }는 "is_module"이 null이거나 존재하지 않는 문서를 선택하지만 "is_model"이 false인 문서는 선택하지 않습니다.

지금은 다음과 같은 질문이 있습니다만, 잘 동작하고 있습니다만, 그다지 우아하지 않은 것 같습니다.선택해야 하는 필드가 여러 개일 경우 매우 빠르게 복잡해집니다.동일한 최종 결과를 얻을 수 있는 더 나은 쿼리가 있습니까?

db.fruits.find({ $or: [ { "is_reported": null }, { "is_reported": false } ] })

이 조작은, 다음과 같이 실시할 수 있습니다.

db.fruits.find({is_reported: {$in: [null, false]}})

반환:

{
  "_id": 1,
  "name": "Apple"
}
{
  "_id": 2,
  "name": "Banana",
  "is_reported": null
}
{
  "_id": 3,
  "name": "Cherry",
  "is_reported": false
}

논리적으로 뒤집어서$ne다른 가치관이 없다면true제외:

db.fruits.find({is_reported: {$ne: true}})

언급URL : https://stackoverflow.com/questions/22290538/select-mongodb-documents-where-a-field-either-does-not-exist-is-null-or-is-fal