猫鼬阵列推送没有重复

Jac*_*son 4 mongoose mongodb

我使用以下update命令进行建模:

Room.update({_id: roomId, status: 'live'}, {$push: {"users" : {_id: user._id, loginName: user.loginName}}}, {}, function(err, room) {
Run Code Online (Sandbox Code Playgroud)

模型:

{
    _id: "56c0d9e332f6ddc80ec7271c",
    name: "Reqqqq2",
    creator: "MegaDaddgy",
    status: "live",
    __v: 0,
    users: [
        {
        _id: "56c0a986eeb118741109a45f",
        loginName: "MegaDaddgy"
        },
        {
        _id: "56bf96f56a0c220812f055e6",
        loginName: "Maad"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我不想向 中添加重复的字段users,我该怎么做?

zan*_*ngw 7

$addToSet可以阻止出现在重复条目users

Room.update(
   {_id: roomId, status: 'live'}, 
   {$addToSet: 
      {"users" : {_id: user._id, loginName: user.loginName}}}, function(err, room) {
Run Code Online (Sandbox Code Playgroud)

另一种方法可以通过$ne与下面评论中提到的布雷克相同的方法来完成

Room.update({ "_id": roomId, "status": "live", "users._id": { "$ne": user._id } }, { "$push": { "users": { "_id": user._id, "loginName": user.name } } })
Run Code Online (Sandbox Code Playgroud)