Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

map 関数のトラブルシューティング

項目一覧

  • キーと値のペアの検証

注意

map-reduce の代替としての集計パイプライン

MongoDB 5.0以降、 map-reduceは非推奨です。

map-reduce を集計パイプラインに置き換える例については、以下を参照してください。

また、map-reduce 操作よりも集計パイプラインの方がトラブルシューティングが簡単です。

map関数は、値をキーに関連付けたり「マッピング」したり、 map-reduce操作中にキーと値のペアを出力したりするJavaScript関数です。

map関数によって出力されるkeyvalueのペアを確認するには、独自のemit関数を記述します。

次のプロトタイプのドキュメントを含むコレクションordersについて考えます。

{
_id: ObjectId("50a8240b927d5d8b5891743c"),
cust_id: "abc123",
ord_date: new Date("Oct 04, 2012"),
status: 'A',
price: 250,
items: [ { sku: "mmm", qty: 5, price: 2.5 },
{ sku: "nnn", qty: 5, price: 2.5 } ]
}
  1. 各ドキュメントのpricecust_idにマッピングし、 cust_idpriceのペアを出力するmap関数を定義します。

    var map = function() {
    emit(this.cust_id, this.price);
    };
  2. キーと値を出力するには、 emit関数を定義します。

    var emit = function(key, value) {
    print("emit");
    print("key: " + key + " value: " + tojson(value));
    }
  3. ordersコレクションからの単一のドキュメントを使用してmap関数を呼び出します。

    var myDoc = db.orders.findOne( { _id: ObjectId("50a8240b927d5d8b5891743c") } );
    map.apply(myDoc);
  4. キーと値のペアが期待どおりであることを確認します。

    emit
    key: abc123 value:250
  5. ordersコレクションから複数のドキュメントを使用してmap関数を呼び出します。

    var myCursor = db.orders.find( { cust_id: "abc123" } );
    while (myCursor.hasNext()) {
    var doc = myCursor.next();
    print ("document _id= " + tojson(doc._id));
    map.apply(doc);
    print();
    }
  6. キーと値のペアが期待どおりであることを確認します。

Tip

以下も参照してください。

map関数はさまざまな要件を満たしている必要があります。 map関数のすべての要件のリストについては、 mapReduceまたは mongoshヘルパー メソッドdb.collection.mapReduce()を参照してください。

戻る

増分で実行