2

最近MongoDB2.4にアップグレードしましたが、リリースノートで参照されているように、dbを使用するマップ関数に問題があります。リリースノートではリファクタリングが推奨されていますが、どのルートを取る必要があるのか​​わかりません。

現在機能していない関数は次のとおりです。

function map() {
  var student = db.student.findOne(this.student_id);
  var school = db.school.findOne(this.school_id);
  ...
  emit({
    bcg_id: student.bcg_id,
  ...

dbが廃止されたため、ドキュメントを「student」コレクションから「student」変数に渡す方法がわかりません。

何かお勧めはありますか?

4

1 に答える 1

1

javascript関数内でクエリを実行することはできなくなりました。

参照:http ://docs.mongodb.org/manual/release-notes/2.4/#additional-limitations-for-map-reduce-and-where-operations

スコープにデータを渡すことができます。例:

res = t.mapReduce( mapper , reducer , { scope : { xx : 1 } } );

しかし、リファクタリングがどれほど大きいかについては、元のマップリデュース関数が何をしたかによって異なります。

必要なすべてのデータを新しいコレクションにまとめてから、代わりにマップリデュースを実行することをお勧めします。

于 2013-03-27T13:42:13.020 に答える