option可以是下面几个选项:
{ inline : 1 } – 不会创建collection,结果保存在内存里,只限于结果小于16MB的情况
如果用collection name作option不能与其它option一起使用,其它则可以,如:
merge选项的可能性最大,但是经过实验发现,它总是会根据“_id”更新整个文档,而不是只更新reduce或者finalize出来的对象里有的字段。
比如我一个已经存在的集合A,有10几个字段,没有emps字段,我运行一个MR操作,reduce出来的是{key,emps:[["0132",70],["1443",30]]},想把emps字段添加到现有的集合A上,结果我10几个字段都没有了,就只剩下emps字段了。
本来想在reduce里引用db对象手工update的,但是现在的版本都不让引用db对象了。
现在只能在mapreduce后,执行一个forEach,手工执行update。
请问mapreduce有没有相应的解决方案。
を使用すると、指定したreduce関数(リデューサー)を使用して結果セット内の
http://docs.mongodb.org/manual/reference/method/db.collection.mapReduce/#output-to-a-collection-with-an-actionreduce
既存の結果と新たに計算された結果が計算され、最終結果が保存されます。ここで最も重要なことは、マッパーによって出力される中間結果を最終結果と同じ形式にすることです。このようなリデューサは 2 つの場所で使用され、1 つはリデュースで、もう 1 つは出力で使用されます。これらの形式、特に階層が同じであれば、記述がはるかに簡単になります。リデューサーは、複数の結果をマージすることだけを担当すると理解できます。マッパーが中間結果のみを出力する場合は、リデューサーを経由せずに、それを最終結果として直接使用する必要があります。実際、MongoDB では、キーが 1 つのマッパー出力のみに対応する場合、実際にはリデューサーを経由せずに直接出力されます。