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

あまりネストを深くするようならコレクションをうまく分けたほうがよろしいかと思われます。。。

コメントを残す