【问题标题】:Avoid duplicate entries on Mongoose array避免 Mongoose 数组上的重复条目
【发布时间】:2016-11-25 20:19:49
【问题描述】:

我有一个使用猫鼬的多对多关系,看起来像这样。

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

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

当我这样做时:

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

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

谢谢!

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    像这样使用$addToSet更新运算符:

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

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

    【讨论】:

      【解决方案2】:

      只需使用addToSet 方法:

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

      【讨论】:

        猜你喜欢
        • 2012-08-24
        • 2021-05-15
        • 1970-01-01
        • 2023-03-22
        • 2017-12-09
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        相关资源
        最近更新 更多