私は次のコレクションを持っています:
{
  "_id" : ObjectId("51f1fcc08188d3117c6da351"),
  "cust_id" : "abc123",
  "ord_date" : ISODate("2012-10-03T18:30:00Z"),
  "status" : "A",
  "price" : 25,
  "items" : [{
      "sku" : "ggg",
      "qty" : 7,
      "price" : 2.5
    }, {
      "sku" : "ppp",
      "qty" : 5,
      "price" : 2.5
    }]
}
私のマップ機能は次のとおりです。
 var map=function(){emit(this._id,this);}
デバッグ目的で、次のように emit メソッドをオーバーライドします。
var emit = function (key,value){
  print("emit");
  print("key: " + key + "value: " + tojson(value));
  reduceFunc2(key, toJson(value));
}
reduce 関数は次のようになります。
var reduceFunc2 = function reduce(key,values){
  var val = values;
  print("val",val);
  var items = [];
  val.items.some(function (entry){
    print("entry is:::"+entry);
    if (entry.qty>5 && entry.sku=='ggg'){
      items.push(entry)
    }
  });
  val.items = items;
  return val;
}
しかし、マップを次のように適用すると:
var myDoc = db.orders.findOne({
  _id: ObjectId("51f1fcc08188d3117c6da351")
});
map.apply(myDoc);
次のエラーが表示されます。
emit key: 51f1fcc08188d3117c6da351 value:
{
  "_id":" ObjectId(\"51f1fcc08188d3117c6da351\")",
  "cust_id":"abc123",
  "ord_date":" ISODate(\"2012-10-03T18:30:00Z\")",
  "status":"A",
  "price":25,
  "items":[
    {
       "sku":"ggg",
       "qty":7,
       "price":2.5
    },
    {
       "sku":"ppp",
       "qty":5,
       "price":2.5
    }
  ]
}
value:: undefined
Tue Jul 30 12:49:22.920 JavaScript execution failed: TypeError: Cannot call method 'some' of undefined
それらは、印刷された値の項目フィールドであり、配列の種類であることがわかります。それでも、誰かが私が間違っている場所を知ることができれば、undefinedでいくつかを呼び出すことができないというエラーがスローされます。