1. ホーム
  2. mongodb

[解決済み] mongodbで子オブジェクトを問い合わせる方法

2023-07-11 10:49:43

質問

私はmongodbの初心者で、子オブジェクトをクエリしようとしています。私は州のコレクションを持っており、各州は子の都市を持っています。Citiesの1つにNameプロパティがあり、それがNullであるため、私のアプリでエラーが発生しています。Stateコレクションを照会して、name==nullを持つ子Cityを見つけるにはどうしたらよいでしょうか?

どのように解決するのですか?

もし、正確に null (設定されていないのとは対照的)です。

db.states.find({"cities.name": null})

(というように、都市配列が全くない文書にもマッチします(ただし、javierfpさんが指摘されているように、都市配列があることを前提にしています)。

もし、そのプロパティが設定されていない場合。

db.states.find({"cities.name": {"$exists": false}})

この2つのインサートで作成したコレクションで上記をテストしてみました。

db.states.insert({"cities": [{name: "New York"}, {name: null}]})
db.states.insert({"cities": [{name: "Austin"}, {color: "blue"}]})

最初のクエリは最初の状態を見つけ、2番目のクエリは2番目の状態を見つけます。もし一回のクエリで両方を見つけたい場合は $or クエリを作成します。

db.states.find({"$or": [
  {"cities.name": null}, 
  {"cities.name": {"$exists": false}}
]})