以前の記事でMongoDBで$or
が複数使えないという件を書きましたが、最近になって$and
がちゃんと用意されていることを知りました。
node.jsのドライバを使っていたので、
http://mongodb.github.io/node-mongodb-native/
のドキュメントを読んでいたのですが、これが敗因でした。 MongoDB本体のドキュメントである
にはちゃんと書いてありました。こちら。
http://docs.mongodb.org/manual/reference/operator/and/
なぜ、前回は見つけられなかったのでしょう。
これを使えば、 「(AまたはB)かつ(CまたはD)」のようなクエリを書くことができます。
{"$and": [{$or: [{"name": "orange"}, {"name": "apple"}]},
{$or: [{"color": "red"}, {"color": "green"}]}]}
といったところ。ちなみに、この例は$in
でも書けてしまいますが。
MongoDBには他にも色々機能がありそうなので、また調べてみようと思います。
コメント