1
{ "userID" : 1, "amount" : 2, "date" : ISODate("2012-04-03T20:53:19.490Z") }
{ "userID" : 1, "amount" : 4, "date" : ISODate("2012-04-03T20:53:19.490Z") }
{ "userID" : 2, "amount" : 4, "date" : ISODate("2012-04-03T20:53:19.490Z") }
{ "userID" : 3, "amount" : 1, "date" : ISODate("2012-04-03T20:53:19.490Z") }
{ "userID" : 1, "amount" : 2, "date" : ISODate("2012-04-03T20:53:19.490Z") }

購入の合計をカウントしているときに、インクリメンタルな Map/Reduce 操作を実行しています。m/r 関数は非常に単純なので、ここには書きません。

    MapReduceCommand cmd = new MapReduceCommand(coll, map, reduce, "result",  MapReduceCommand.OutputType.MERGE, null);

結果は以下になります。これは完璧です:

{ "_id" : 1, "value" : 8 }
{ "_id" : 2, "value" : 4 }
{ "_id" : 3, "value" : 1 }

userIF 4 を持つユーザーがシステムに追加される場合、私の増分マップ削減がそれを処理し、新しい行が結果コレクションに追加されます。

問題:ユーザー ID 2 がシステムから削除される場合、その行は結果コレクションに残ります。インクリメンタル Map reduce を使用するときに、このような古い値を処理するにはどうすればよいですか?

4

0 に答える 0