1

Meteor で mongo ドキュメントに対して「タッチ」などの操作ができるかどうかを知りたいです。

パッケージを使用aldeed:collection2してデータベース スキーマを検証しています。最近、デフォルト値を持ついくつかの新しいフィールドを追加したので、データベースで移行を実行する必要があります。

新しいフィールドごとに個別の移行を記述するのではなく、すべてのドキュメントに触れて、 を使用して定義された defaultValuealdeed:simple-schemaがドキュメントに適用されるようにする予定です。

タッチ操作はありますか?どうすれば続行できますか?

4

1 に答える 1

0

コレクション、、validateおよび更新内の各ドキュメントを反復するだけです。これは、事実上、各ドキュメントを「タッチ」することです。これは 1 回限りの移行であるため、パフォーマンスが問題になることはありません。手順は次のとおりです。

  1. s をドキュメント オブジェクトにvalidate(doc)自動的に適用する SimpleSchema を使用してドキュメントを検証します。defaultValue
  2. collection.update(doc)

実装例を次に示します。

collection.find().forEach(function(doc) {
  MySchema.namedContext("myContext").validate(doc);
  collection.update({_id: doc._id}, doc);
});

それはそれを行う必要があります!


注: SimpleSchema を利用するには、明らかにこのコードを (mongo ではなく) Meteor コンテキストから実行する必要がありますが、これは運用環境では難しい場合があります。したがって、この移行は、クライアントから呼び出すサーバー側のメソッド (必ず保護してください) として記述するか、実装に基づいて利用できる場合は Meteor シェルから呼び出すことができます。

于 2015-09-03T17:29:32.583 に答える