Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb mongoose阵列无重复推送_Mongodb_Mongoose - Fatal编程技术网

Mongodb mongoose阵列无重复推送

Mongodb mongoose阵列无重复推送,mongodb,mongoose,Mongodb,Mongoose,我使用以下update命令建模: Room.update({_id: roomId, status: 'live'}, {$push: {"users" : {_id: user._id, loginName: user.loginName}}}, {}, function(err, room) { 型号: { _id: "56c0d9e332f6ddc80ec7271c", name: "Reqqqq2", creator: "MegaDaddgy", sta

我使用以下
update
命令建模:

Room.update({_id: roomId, status: 'live'}, {$push: {"users" : {_id: user._id, loginName: user.loginName}}}, {}, function(err, room) {
型号:

{
    _id: "56c0d9e332f6ddc80ec7271c",
    name: "Reqqqq2",
    creator: "MegaDaddgy",
    status: "live",
    __v: 0,
    users: [
        {
        _id: "56c0a986eeb118741109a45f",
        loginName: "MegaDaddgy"
        },
        {
        _id: "56bf96f56a0c220812f055e6",
        loginName: "Maad"
        }
    ]
}
我不想向
用户
添加重复的字段,如何才能做到这一点?

可以防止
用户

Room.update(
   {_id: roomId, status: 'live'}, 
   {$addToSet: 
      {"users" : {_id: user._id, loginName: user.loginName}}}, function(err, room) {
另一种方法可以通过
$ne
完成,与下面评论中提到的Blakes相同

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

大概你是在遵循
\u id
是“唯一”的惯例,所以:
房间更新({“\u id”:roomId,“status”:“live”,“users.\u id”:{“$ne”:user.\u id},{“$push”:{“users”:{“\u id”:user.\u id,“loginName”:user.name}})
。因此,基本上是寻找用户
\u id
不存在的地方(
$ne
不等于)。现在不难了。