[MONGODB] 어떻게 쿼리 아이가 MongoDB를 개체에
MONGODB어떻게 쿼리 아이가 MongoDB를 개체에
나는 MongoDB에 새로운 해요 및 쿼리 자식 개체에 노력하고 있습니다. 나는 미국의 컬렉션을 가지고, 각 국가는 자식 도시가 있습니다. 도시의 하나는 내 응용 프로그램에서 오류를 일으키는 null의 이름 속성이 있습니다. 어떻게 이름 == 널 (null)이 아이 도시를 찾기 위해 국가의 컬렉션을 조회 할 것인가?
해결법
-
==============================
1.정확히 null의 경우 (설정되지 않음 반대) :
정확히 null의 경우 (설정되지 않음 반대) :
db.states.find({"cities.name": null})
(javierfp가 지적한대로하지만, 그것은 또한, 나는 그들이 할 수 있으리라 믿고있어 전혀 도시의 배열이없는 문서와 일치).
그것은 속성이 설정되지 않는 경우가 있다면 :
db.states.find({"cities.name": {"$exists": false}})
나는이 두 가지를 삽입하여 만든 컬렉션 위를 테스트했습니다 :
db.states.insert({"cities": [{name: "New York"}, {name: null}]}) db.states.insert({"cities": [{name: "Austin"}, {color: "blue"}]})
첫 번째 쿼리는 첫 번째 상태가, 두 번째 쿼리는 두 번째를 발견 찾습니다. 당신이 그 (것)들에게 하나 개의 쿼리를 모두 찾으려면 당신은 $ 또는 쿼리를 만들 수 있습니다 :
db.states.find({"$or": [ {"cities.name": null}, {"cities.name": {"$exists": false}} ]})
-
==============================
2.당신의 "상태"가정 컬렉션과 같다 :
당신의 "상태"가정 컬렉션과 같다 :
{"name" : "Spain", "cities" : [ { "name" : "Madrid" }, { "name" : null } ] } {"name" : "France" }
널 도시와 찾기 상태에 대한 쿼리는 다음과 같습니다
db.states.find({"cities.name" : {"$eq" : null, "$exists" : true}});
이 같은 널 (null)에 대한 쿼리에 대한 일반적인 실수입니다 :
db.states.find({"cities.name" : null});
이 쿼리 키를 결여 모든 문서를 반환하기 때문에 (우리의 예에서 스페인과 프랑스를 반환합니다). 당신이 확실하지 않으면 그래서, 키는 키가 첫 번째 쿼리 같이 존재하는지 확인해야합니다 항상 존재합니다.
from https://stackoverflow.com/questions/4762947/how-to-query-child-objects-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의 GUI 클라이언트 (크로스 플랫폼 또는 Linux) [마감] (0) | 2019.12.16 |
---|---|
[MONGODB] 시계열 데이터베이스로 MongoDB를 (0) | 2019.12.16 |
[MONGODB] 로와 몽구스의 두 OR-쿼리를 결합 (0) | 2019.12.16 |
[MONGODB] -지도 감소 MongoDB를 2.2, 2.4의 성능을, 2.6 (0) | 2019.12.16 |
[MONGODB] MongoDB를 정상화, 외래 키 및 가입 (0) | 2019.12.16 |