Mongo에서 "not 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})
라이너 1개가 가장 좋습니다.
db.mycollection.find({ 'fieldname' : { $exists: true, $ne: null } });
여기서,
mycollection : 원하는 컬렉션 이름을 지정합니다.
fieldname : 원하는 필드 이름을 입력합니다.
설명:
$exists : true일 경우 $exists는 필드가 포함된 문서(필드 값이 null인 문서 포함)와 일치합니다.가 false일 경우 쿼리는 필드를 포함하지 않는 문서만 반환합니다.
$ne 필드 값이 지정된 값과 같지 않은 문서를 선택합니다.여기에는 필드가 포함되지 않은 문서가 포함됩니다.
따라서 제공된 경우 다음 쿼리는 imageurl 필드가 존재하며 null 값이 아닌 모든 문서를 반환합니다.
db.mycollection.find({ 'imageurl' : { $exists: true, $ne: null } });
db.collection_name.find({"filed_name":{$exists:true}});
null인 경우에도 이 field_name이 포함된 문서를 가져옵니다.
경고
db.collection_name.find({"filed_name":{$ne:null}});
field_name의 값이 $ne에서 null인 문서를 가져오지만 이 값은 빈 문자열일 수도 있습니다.
제안:
db.collection_name.find({ "field_name":{$ne:null},$where:"this.field_name.length >0"})
pymongo에서는 다음을 사용할 수 있습니다.
db.mycollection.find({"IMAGE URL":{"$ne":None}});
왜냐하면 피몽고는 몽고를 상징하기 때문이다.null
매우None
.
미래의 독자를 위한 공유.
이 쿼리는 우리에게 효과가 있었습니다(MongoDB 나침반에서 실행된 쿼리).
{
"fieldName": {
"$nin": [
"",
null
]
}
}
이상적인 경우 null, " 또는 empty(레코드에 필드가 존재하지 않음)의 3가지 값을 모두 테스트합니다.
다음을 수행할 수 있습니다.
db.users.find({$and: [{"name" : {$nin: ["", null]}}, {"name" : {$exists: true}}]})
mongo 나침반에서 컬럼의 존재를 확인하는 가장 간단한 방법은 다음과 같습니다.
{ 'column_name': { $exists: true } }
언급되지 않았지만 일부(NULL 항목과 함께 작동하지 않음)에게는 더 효율적인 옵션이 될 수 있는 대안은 스파스 인덱스를 사용하는 것입니다(인덱스의 항목은 필드에 무엇인가 있을 때만 존재합니다).다음은 샘플 데이터 세트입니다.
db.foo.find()
{ "_id" : ObjectId("544540b31b5cf91c4893eb94"), "imageUrl" : "http://example.com/foo.jpg" }
{ "_id" : ObjectId("544540ba1b5cf91c4893eb95"), "imageUrl" : "http://example.com/bar.jpg" }
{ "_id" : ObjectId("544540c51b5cf91c4893eb96"), "imageUrl" : "http://example.com/foo.png" }
{ "_id" : ObjectId("544540c91b5cf91c4893eb97"), "imageUrl" : "http://example.com/bar.png" }
{ "_id" : ObjectId("544540ed1b5cf91c4893eb98"), "otherField" : 1 }
{ "_id" : ObjectId("544540f11b5cf91c4893eb99"), "otherField" : 2 }
이제 imageUrl 필드에 sparse 인덱스를 만듭니다.
db.foo.ensureIndex( { "imageUrl": 1 }, { sparse: true } )
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
MongoDB는 인덱스를 사용하는 대신 테이블스캔을 사용할 가능성이 있습니다(특히 샘플과 같은 작은 데이터 세트를 사용하는 경우).이러한 경우에는 가능한 한 커버가 있는 인덱스 쿼리에 대해서도 마찬가지입니다.그 차이를 쉽게 설명할 수 있는 방법은 다음과 같습니다.
db.foo.find({}, {_id : 0, imageUrl : 1})
{ "imageUrl" : "http://example.com/foo.jpg" }
{ "imageUrl" : "http://example.com/bar.jpg" }
{ "imageUrl" : "http://example.com/foo.png" }
{ "imageUrl" : "http://example.com/bar.png" }
{ }
{ }
, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★imageUrl
이유를 확인하기 위해 다음과 같이 설명하십시오.
db.foo.find({}, {_id : 0, imageUrl : 1}).explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 6,
"nscannedObjects" : 6,
"nscanned" : 6,
"nscannedObjectsAllPlans" : 6,
"nscannedAllPlans" : 6,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"server" : "localhost:31100",
"filterSet" : false
}
네, 아, 아, 아, 아, 아, 아, 아, 아, 아.BasicCursor
테이블 스캔과 같으며 인덱스를 사용하지 않았습니다.수 .hint()
:
db.foo.find({}, {_id : 0, imageUrl : 1}).hint({imageUrl : 1})
{ "imageUrl" : "http://example.com/bar.jpg" }
{ "imageUrl" : "http://example.com/bar.png" }
{ "imageUrl" : "http://example.com/foo.jpg" }
{ "imageUrl" : "http://example.com/foo.png" }
그리고 우리가 찾던 결과가 있습니다. 필드가 채워진 문서만 반환됩니다.또한 인덱스(즉, 대상 인덱스 쿼리)만 사용하므로 결과를 반환하려면 인덱스만 메모리에 있어야 합니다.
이는 특수한 사용 사례이므로 일반적으로 사용할 수 없습니다(이 옵션에 대한 다른 답변 참조). 현재 할 수 .count()
이 방법(제 예에서는 4가 아닌 6이 반환되므로, 적절한 경우에만 사용하십시오.
db.<collectionName>.find({"IMAGE URL":{"$exists":"true"}, "IMAGE URL": {$ne: null}})
하지 않을 수 있습니다.위에서는 $ne구문을 .즉, 위 에서는 $:"를.MQL($ne:null)은 null(null)을 사용합니다.대신 $ne:" 구문을 사용해야 합니다.즉, 위의 예에서는 $ne:"를 사용해야 합니다.db.mycollection.find({"IMAGE URL":{"$ne":""}})
- 왜이 일어나는지 , 이 .- MongoDB 포럼 MongoDB 포럼에 올렸습니다.
다음은 예를 보여 주는 스냅샷입니다.
쿼리는
db.mycollection.find({"IMAGE URL":{"$exists":"true"}})
"가 포함된 모든 문서가 반환됩니다.「IMAGE URL」을 키의 ............
언급URL : https://stackoverflow.com/questions/4057196/how-do-you-query-for-is-not-null-in-mongo
'programing' 카테고리의 다른 글
WordPress에서 포스트슬러그를 얻는 방법 (0) | 2023.04.02 |
---|---|
옵션을 동적으로 변경할 때 IE 선택 문제를 수정하는 방법 (0) | 2023.04.02 |
Node.js 및 Express를 사용한 간단한 API 호출 (0) | 2023.04.02 |
Word Press가 제대로 프로그래밍되지 않은 것으로 간주되는 이유는 무엇입니까? (0) | 2023.04.02 |
첨부 파일과 함께 Wordpress 게시물을 프로그래밍 방식으로 추가하는 중 (0) | 2023.04.02 |