0

私は初めて Mongoose を使用していますが、単純な作業と思われることを達成しようとしています。clientsクライアント ID の配列で構成されるプロパティを含むユーザー ドキュメントがあります。例として、私のドキュメントは次のようになります。

{
  email: "nick@movementstrategy.com",
  password: "$2a$10$xZVzMYgyoyT.biOMDrBlRe3HNHY5A6lXga6uc8b/cnIAX/khQ7ep2",
  modified: ISODate("2013-01-16T00:13:56.894Z"),
  created: ISODate("2013-01-16T00:13:56.894Z"),
  _id: ObjectId("50f5f0c4d6bbbcc6ce000002"),
  clients: [
    "50f6e118e0ccf9a1e9000001",
    "50f6e12be0ccf9a1e9000002"
  ],
  __v: 0
}

remove(); を呼び出したときにクライアントの依存関係を削除するミドルウェアを作成しました。

clientSchema.pre('remove', function(next) {

    Sweepstakes.remove({client_id: this._id}).exec();
    Submission.remove({client_id: this._id}).exec();

    // find users with this._id present in clients, and remove from array

    next();

});

ここで、クライアント ID が存在するすべてのユーザーを検索しclients、ID を削除して、ユーザーを更新する必要があります。

ID が存在するすべてのユーザーを簡単にクエリし、ループして各ユーザーを個別に保存できることはわかっています...やるべきこと - ドキュメントでそれを見つけるのに苦労しているだけです。

Mongoose を使用してこれを行う最も効率的な方法は何ですか?

4

1 に答える 1

2

おそらく次のようなものです:

Users.update({condition}, {$pull : { clients: this._id} }, function(err, numAffected) {
    //handle errors and whatever
    next();
});

clients : {$in : [this._id]}asを追加しconditionて更新を制限できます。

于 2013-01-16T17:40:50.803 に答える