避免在Mongoose数组上重复输入

时间:2012-11-15 19:04:36

标签: mongodb mongoose

我使用mongoose有很多关系,看起来像这样。

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

我想要做的是确保一个玩家在团队中不会出现两次。

当我这样做时:

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

如果我之前已添加过该播放器,我会在团队文档中看到两次玩家ID。我可以设置某种mongo / mongoose标志,以便save方法抛出异常,或者不添加播放器。我知道我可以手工检查,但我更喜欢更简单的解决方案。

谢谢!

2 个答案:

答案 0 :(得分:25)

使用$addToSet更新运算符,如下所示:

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

假设player是玩家的ObjectId,它只会被添加到团队的players数组中(如果它尚未存在)。

答案 1 :(得分:8)

只需使用addToSet方法:

team.players.addToSet(player)
team.save()