今更感があるものをあえて後ろから追いかけていくこの企画。
世の中のスピードに負けずに、今日もテキトー感満載でのんびりやりますよ。
今日の目的は
クエリー
です。データ準備
今日はクエリーですので、データをまんべんなく準備します。
データの挿入は前回にやったとおり、
db.collection.insert({jsondata})
です。
> var ary = [1, 3, 7];
> var bry = [5, 11, 2];
> var cry = ["hop", "step", "jump"];
> cry.forEach(function(c) {
...... ary.forEach(function(a) {
...... bry.forEach(function(b) {
...... db.list.insert(
...... {
...... "type" : c,
...... "aIndex" : a,
...... "bIndex" : b,
...... "sum" : a + b,
...... "multi" : a * b
...... }
...... );
...... })
...... })
...... });
> assert(db.list.find().length() === 27, "check size");
>
はい、 3 x 3 x 3 = 27 のデータが入っているようですね。
クエリ
じゃあ、一応リストを出力してみましょう。
なお、これはSQLで言うところの、
SELECT
*
FROM
LIST
にあたります。
これは、
db.list.find()
で出力できます。
> db.list.find()
{ "_id" : ObjectId("4ee7bd7b4238f3326533177f"), "type" : "hop", "aIndex" : 1, "bIndex" : 5, "sum" : 6, "multi" : 5 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331780"), "type" : "hop", "aIndex" : 1, "bIndex" : 11, "sum" : 12, "multi" : 11 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331781"), "type" : "hop", "aIndex" : 1, "bIndex" : 2, "sum" : 3, "multi" : 2 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331782"), "type" : "hop", "aIndex" : 3, "bIndex" : 5, "sum" : 8, "multi" : 15 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331783"), "type" : "hop", "aIndex" : 3, "bIndex" : 11, "sum" : 14, "multi" : 33 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331784"), "type" : "hop", "aIndex" : 3, "bIndex" : 2, "sum" : 5, "multi" : 6 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331785"), "type" : "hop", "aIndex" : 7, "bIndex" : 5, "sum" : 12, "multi" : 35 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331786"), "type" : "hop", "aIndex" : 7, "bIndex" : 11, "sum" : 18, "multi" : 77 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331787"), "type" : "hop", "aIndex" : 7, "bIndex" : 2, "sum" : 9, "multi" : 14 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331788"), "type" : "step", "aIndex" : 1, "bIndex" : 5, "sum" : 6, "multi" : 5 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331789"), "type" : "step", "aIndex" : 1, "bIndex" : 11, "sum" : 12, "multi" : 11 }
{ "_id" : ObjectId("4ee7bd7b4238f3326533178a"), "type" : "step", "aIndex" : 1, "bIndex" : 2, "sum" : 3, "multi" : 2 }
{ "_id" : ObjectId("4ee7bd7b4238f3326533178b"), "type" : "step", "aIndex" : 3, "bIndex" : 5, "sum" : 8, "multi" : 15 }
{ "_id" : ObjectId("4ee7bd7b4238f3326533178c"), "type" : "step", "aIndex" : 3, "bIndex" : 11, "sum" : 14, "multi" : 33 }
{ "_id" : ObjectId("4ee7bd7b4238f3326533178d"), "type" : "step", "aIndex" : 3, "bIndex" : 2, "sum" : 5, "multi" : 6 }
{ "_id" : ObjectId("4ee7bd7b4238f3326533178e"), "type" : "step", "aIndex" : 7, "bIndex" : 5, "sum" : 12, "multi" : 35 }
{ "_id" : ObjectId("4ee7bd7b4238f3326533178f"), "type" : "step", "aIndex" : 7, "bIndex" : 11, "sum" : 18, "multi" : 77 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331790"), "type" : "step", "aIndex" : 7, "bIndex" : 2, "sum" : 9, "multi" : 14 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331791"), "type" : "jump", "aIndex" : 1, "bIndex" : 5, "sum" : 6, "multi" : 5 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331792"), "type" : "jump", "aIndex" : 1, "bIndex" : 11, "sum" : 12, "multi" : 11 }
has more
>
なんか、全部出してくれませんでした…orz
では、ここで、"type"が"step"で、"sum"の値が7より大きくて、"multi"の値が15以下のものを検索してみましょう。
SQLでは、つぎのような感じですね。
SELECT
*
FROM
LIST
WHERE
TYPE = 'step'
AND SUM > 7
AND MULTI <= 15
なお、クエリーにはJSON
を利用します。
> db.list.find({"type" : "step", "sum" : {$gt : 7}, "multi" : {$lte : 15}});
{ "_id" : ObjectId("4ee7bd7b4238f33265331789"), "type" : "step", "aIndex" : 1, "bIndex" : 11, "sum" : 12, "multi" : 11 }
{ "_id" : ObjectId("4ee7bd7b4238f3326533178b"), "type" : "step", "aIndex" : 3, "bIndex" : 5, "sum" : 8, "multi" : 15 }
{ "_id" : ObjectId("4ee7bd7b4238f33265331790"), "type" : "step", "aIndex" : 7, "bIndex" : 2, "sum" : 9, "multi" : 14 }
>
演算子には$
で始まる記号を用いるんですね。
ちょっとHTMLに慣れていると、一瞬オヤっ!と思うかもしれません。
記号の向きが逆になっていることに気をつけてください。
数学記号 | JSON中で指定する記号 |
---|---|
< | &gt |
<= | &gte |
>= | &lte |
> | &lt |
はい、というわけで、次回はGmongoに行きます。
0 件のコメント:
コメントを投稿