[メモ]mongodb:配列内の値での絞り込みの仕方

完全に自分用メモです。

mongoDBで配列内の値をキーにどうやって絞り込むか解らなかったので、調べました。
※実際に値を作ってクエリー投げてみて確認しました。

基本的にはここにすべて書かれています。
高度なクエリー-配列内の値

自分が適当に検証したのは・・

[user@servername ~]$ mongo test_db
> db.test_collection.save({a:1});
> db.test_collection.save({a:2});
> db.test_collection.save({a:3});
> db.test_collection.save({a:4});
> db.test_collection.save({a:5});
> db.test_collection.save({a:6});
> db.test_collection.save({a:7,b:[{b1:"b1_1",b2:"b1_2"},{b1:"b2_1",b2:"b2_2"}]});
> db.test_collection.save({a:8,b:[{b1:"b1_2",b2:"b1_3"},{b1:"b2_2",b2:"b2_3"}]});
> db.test_colection.find({b:{$elemMatch:{b1:"b1_1"}}});
{ "_id" : ObjectId("4febdcb92cd09b7bd6abce80"), "a" : 7, "b" : [ { "b1" : "b1_1", "b2" : "b1_2" }, { "b1" : "b2_1", "b2" : "b2_2" } ] }
>

これで見事に取得できている。。
db.test_colection.find({b:{$elemMatch:{b1:”b1_1″}}});
(結局$elemMatchを使えばよいということらしい。)

これでやっと、一つわからない部分が解決した。。
長かったなぁ・・・

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です