[mongodb] Mongo에서 “null이 아닌”을 어떻게 쿼리합니까?

다음 쿼리를 실행하고 싶습니다.

db.mycollection.find(HAS IMAGE URL)

올바른 구문은 무엇입니까?



답변

“IMAGE URL”이라는 키가있는 모든 문서를 반환하지만 여전히 null 값을 가질 수 있습니다.

db.mycollection.find({"IMAGE URL":{$exists:true}});

“IMAGE URL”이라는 키 null이 아닌 값 이 모두있는 모든 문서를 반환합니다 .

db.mycollection.find({"IMAGE URL":{$ne:null}});

또한 문서에 따르면 $ exists는 현재 인덱스를 사용할 수 없지만 $ ne는 사용할 수 있습니다.

편집 :이 답변에 관심이 있기 때문에 몇 가지 예 추가

이러한 인서트가 주어지면 :

db.test.insert({"num":1, "check":"check value"});
db.test.insert({"num":2, "check":null});
db.test.insert({"num":3});

이렇게하면 세 문서가 모두 반환됩니다.

db.test.find();

첫 번째와 두 번째 문서 만 반환합니다.

db.test.find({"check":{$exists:true}});

첫 번째 문서 만 반환합니다.

db.test.find({"check":{$ne:null}});

두 번째와 세 번째 문서 만 반환됩니다.

db.test.find({"check":null})


답변

하나의 라이너가 최고입니다.

db.mycollection.find({ 'fieldname' : { $exists: true, $ne: null } });

여기,

내 컬렉션 : 원하는 컬렉션 이름을 입력하십시오

분야 명 : 원하는 필드 이름을 입력하십시오

설명 :

존재하는 $ : true 인 경우 $ exists는 필드 값이 널인 문서를 포함하여 필드를 포함하는 문서와 일치합니다. false 인 경우, 조회는 필드를 포함하지 않은 문서 만 리턴합니다.

$ ne 은 필드 값이 지정된 값과 다른 문서를 선택합니다. 필드가 포함되지 않은 문서가 포함됩니다.

따라서 제공된 경우 다음 쿼리는 imageurl 필드가 있고 null 값이없는 모든 문서를 반환합니다.

db.mycollection.find({ 'imageurl' : { $exists: true, $ne: null } });


답변

pymongo에서는 다음을 사용할 수 있습니다.

db.mycollection.find({"IMAGE URL":{"$ne":None}});

pymongo는 mongo “null”을 python “None”으로 표시하기 때문입니다.


답변

db.collection_name.find({"filed_name":{$exists:true}});

이 파일이 포함 된 문서를 가져옵니다.

내 제안 :

db.collection_name.find({"field_name":{$type:2}}) //type:2 == String

필수 속성 유형을 확인할 수 있습니다. 필드 유형이 일치하지 않는 경우 파일 유형을 확인하기 때문에 field_name이 조회 한 field_name에 값이 포함 된 모든 문서를 리턴합니다. 유형 조건이 일치하지 않으면 아무 것도 리턴되지 않습니다.

Nb : field_name에 “”을 의미하는 빈 문자열이 있으면 반환됩니다.

db.collection_name.find({"filed_name":{$ne:null}});

추가 검증 :

좋아, 아직 끝나지 않았으니 추가적인 조건이 필요하다.

db.collection_name.
find({ "field_name":{$type:2},$where:"this.field_name.length >0"})

또는

db.collection_name.
find({ "field_name":{$ne:null},$where:"this.field_name.length >0"})

참고


답변

미래 독자를위한 공유.

이 쿼리는 우리에게 효과적 이었습니다 ( MongoDB compass 에서 실행 된 쿼리 ) :

{
  "fieldName": {
    "$nin": [
      "",
      null
    ]
  }
}


답변

db.<collectionName>.find({"IMAGE URL":{"$exists":"true"}, "IMAGE URL": {$ne: null}})


답변

이상적인 경우에는 null , “” 또는 비어있는 세 가지 을 모두 테스트하려고 합니다 . (필드는 레코드에 존재하지 않음)

다음을 수행 할 수 있습니다.

db.users.find({$and: [{"name" : {$nin: ["", null]}}, {"name" : {$exists: true}}]})