복붙노트

[MONGODB] 어떻게 쿼리 아이가 MongoDB를 개체에

MONGODB

어떻게 쿼리 아이가 MongoDB를 개체에

나는 MongoDB에 새로운 해요 및 쿼리 자식 개체에 노력하고 있습니다. 나는 미국의 컬렉션을 가지고, 각 국가는 자식 도시가 있습니다. 도시의 하나는 내 응용 프로그램에서 오류를 일으키는 null의 이름 속성이 있습니다. 어떻게 이름 == 널 (null)이 아이 도시를 찾기 위해 국가의 컬렉션을 조회 할 것인가?

해결법

  1. ==============================

    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. ==============================

    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});
    

    이 쿼리 키를 결여 모든 문서를 반환하기 때문에 (우리의 예에서 스페인과 프랑스를 반환합니다). 당신이 확실하지 않으면 그래서, 키는 키가 첫 번째 쿼리 같이 존재하는지 확인해야합니다 항상 존재합니다.

  3. from https://stackoverflow.com/questions/4762947/how-to-query-child-objects-in-mongodb by cc-by-sa and MIT license