MongoDB에 필드가 있는지 확인


131

그래서 필드 세트가 있고 null이 아닌 모든 레코드를 찾으려고합니다.

내가 사용하려고 $exists하지만에 따르면 , MongoDB를 문서 이 쿼리가 null 동일 필드를 반환합니다.

$exists 널값을 저장하는 필드가 포함 된 문서와 일치합니다.

이제는 다음과 같이해야한다고 가정합니다.

db.collection.find({ "fieldToCheck" : { $exists : true, $not : null } })

그러나이 작업을 시도 할 때마다 오류가 발생 [invalid use of $not] 합니다.

답변:


184

사용 $ne( "같지 않음")

db.collection.find({ "fieldToCheck": { $exists: true, $ne: null } })

이것은 무엇을 반환합니까? null 컬렉션? 단일 아이템? 배열?
Oliver Dixon

4
@iLoveUnicorns : find항상 반환되는 것 : 기준과 일치하는 레코드 모음.
Sergio Tulentsev

2
@SergioTulentsev AFAIK 그것은 커서를 반환합니다
fernandohur

@fernandohur : 예. 그러나 문서가 한 페이지 미만인 경우에도 차이가 없습니다. 그리고 외부 드라이버 에서이 쿼리를 실행했다면 대부분이 커서 구현 세부 사항에서 당신을 보호한다고 확신합니다.
Sergio Tulentsev

24

아래와 같은 컬렉션이 있다고 가정합니다.

{ 
  "_id":"1234"
  "open":"Yes"
  "things":{
             "paper":1234
             "bottle":"Available"
             "bottle_count":40
            } 
}

보틀 필드가 있는지 여부를 알고 싶습니까?

답변 :

db.products.find({"things.bottle":{"$exists":true}})

2
When <boolean> is true, $exists matches the documents that contain the field, including documents where the field value is null. 문서에서.
AlbertEngelB

1
네,하지만 난이 DB가 null 값을 포함 할 것 인 이유를 참조 '돈, 그것은 실수입니다
마티 페르

3

나는 이것이 나를 위해 작동하는 것을 발견

db.getCollection('collectionName').findOne({"fieldName" : {$ne: null}})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.