반응형
mongodb에서 자식 개체를 쿼리하는 방법
mongodb를 처음 사용하고 자식 개체를 쿼리하려고합니다. 저는 주 컬렉션이 있고 각 주에는 하위 도시가 있습니다. 도시 중 하나에 null 인 Name 속성이있어 앱에서 오류가 발생합니다. 이름이 == null 인 자식 도시를 찾기 위해 State 컬렉션을 어떻게 쿼리합니까?
정확하다면 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"}]})
첫 번째 쿼리는 첫 번째 상태를 찾고 두 번째 쿼리는 두 번째 상태를 찾습니다. 하나의 쿼리로 둘 다 찾으려면 쿼리를 만들 수 $or
있습니다.
db.states.find({"$or": [
{"cities.name": null},
{"cities.name": {"$exists": false}}
]})
"상태"컬렉션이 다음과 같다고 가정합니다.
{"name" : "Spain", "cities" : [ { "name" : "Madrid" }, { "name" : null } ] }
{"name" : "France" }
null 도시가있는 주를 찾는 쿼리는 다음과 같습니다.
db.states.find({"cities.name" : {"$eq" : null, "$exists" : true}});
다음 과 같이 null을 쿼리 하는 것은 일반적인 실수입니다 .
db.states.find({"cities.name" : null});
이 쿼리는 키가없는 모든 문서를 반환하기 때문입니다 (이 예에서는 스페인과 프랑스를 반환합니다). 따라서 키가 항상 존재하는지 확실하지 않으면 첫 번째 쿼리에서와 같이 키가 존재하는지 확인해야합니다.
참고 URL : https://stackoverflow.com/questions/4762947/how-to-query-child-objects-in-mongodb
반응형
'Program Tip' 카테고리의 다른 글
Python에서 Excel 파일을 어떻게 열 수 있습니까? (0) | 2020.10.29 |
---|---|
Ruby에서 세미콜론을 사용할 수 있습니까? (0) | 2020.10.29 |
사용자 지정 .gitignore를 가질 수 있습니까? (0) | 2020.10.29 |
매개 변수를 받아들이는 expressjs 미들웨어 만들기 (0) | 2020.10.29 |
실행중인 Docker 컨테이너에서 파일 및 stdout을 읽는 방법 (0) | 2020.10.29 |