14

私はマングースを使って多対多の関係を持っています、それはこのように見えます。

TeamSchema = new Schema 
    name : String
    players: [{ type: ObjectId, ref: 'Player' }]

私がやりたいのは、1人のプレーヤーがチームに2回登場しないようにすることです。

私がする時:

team.players.push(player)
team.save()

以前にプレーヤーを追加したことがある場合は、チームドキュメントにプレーヤーIDが2回表示されます。saveメソッドが例外をスローするように、またはプレーヤーを追加しないように設定できる、ある種のmongo / mongooseフラグはありますか?手作業でチェックできることはわかっていますが、もっと簡単な解決策をお勧めします。

ありがとう!

4

2 に答える 2

34

$addToSet次のように更新演算子を使用します。

Team.update({_id: team._id}, {$addToSet: {players: player}})

プレーヤーのObjectIdplayerであるとすると、まだ存在していない場合にのみ、チームのplayers配列に追加されます。

于 2012-11-15T20:19:46.327 に答える
9

方法を使用するだけaddToSetです:

team.players.addToSet(player)
team.save()
于 2016-11-25T12:19:49.090 に答える