MongoDB 深くネストしてしまった要素を検索する
データのネストを深くしてしまった!!
何でもMongoDB様は入れることができるので、
調子に乗ってあれよこれよとデータをくっつけていたら思いのほか配列の配列になってしまって、
どうやって取るんだこれみたいな感じになってしまいました。
こんな感じ、
{ "_id" : ObjectId("53a8590e2d8a3d0169bcf5b8"), "MongoID" : "xxxxxxxxxxxxxxxxxxxxx", "data" : [ [ "data1", "data2" ], [ "data1", "data2" ], [ "data1", "data2" ] ] }
$elemMatchを利用して配列以下のデータを取得
$elemMatchを利用して配列以下の中身に対して$inをかけて取得します。
http://docs.mongodb.org/manual/reference/operator/projection/elemMatch/
子要素のデータ検索
db.test.find({"data": { "$elemMatch": {"$elemMatch": {"$in":["data2"] } }} });
一応取得できたかカウント表示
db.test.find({"data": { "$elemMatch": {"$elemMatch": {"$in":["data2"] } }} }).count();
1
あまりネストを深くするようならコレクションをうまく分けたほうがよろしいかと思われます。。。
-
前の記事
Steam版AOMの日本語文字化けが起きる方 2014.05.09
-
次の記事
d3.js始めた 2014.06.25