Arrays 附加到数组nodejs mongodb

Arrays 附加到数组nodejs mongodb,arrays,node.js,mongodb,Arrays,Node.js,Mongodb,我试图将一个字符串附加到一个数组中,该数组将用于标识多个聊天室中的用户。我已经试过了,但无法让它工作。日志只显示以下内容: [] 蒙戈构造 { email: { type: String, index: { unique: true }, required: true }, password: { type: String }, changeName: {type: Boolean}, displayName: { type: String, index: { u

我试图将一个字符串附加到一个数组中,该数组将用于标识多个聊天室中的用户。我已经试过了,但无法让它工作。日志只显示以下内容:

[]

蒙戈构造

{
    email: { type: String, index: { unique: true }, required: true },
    password: { type: String },
    changeName: {type: Boolean},
    displayName: { type: String, index: { unique: true }, required: true },
    avatar: { type: String, default: '/assets/anon.png' },
    permissions: {
        chat: { type: Boolean, default: true },
        admin: { type: Boolean, default: false }
    },
    online: { type: Boolean, default: true },
    channel: { type: Types.ObjectId, ref: 'Channel', default: null }, //users channel
    banned: { type: Boolean, default: false },
    banend: {type:String, default: ''},
    subs: [{ type: Types.ObjectId, ref: 'User' }],
    about: { type: String },
    temporary: {type: Boolean, default: false},
    chatid:[{mid: {type:String}}]
}

让我们只关注以下代码片段:

 app.model.User.update(
               { _id: req.locals.user._id },
               { $addToSet: { chatid: [{mid: req.body.value}]}  } 
            );
首先,请验证您是否在此查询中获得用户。也许,您一开始没有获得用户,因此更新将无法工作。此外,在这种情况下,您不会得到任何错误

其次,如果您正在获取用户,则将您的
$addToSet
查询更新为:
{$addToSet:{chatid:{mid:req.body.value}}
。这些方括号可能会在这里引起问题


我觉得你的问题很好,这让我怀疑你传递的参数。确保
req.body.value
不是
null
undefined
。在这种情况下,更新不会发生,您也不会得到任何错误

我照你说的做了。我修改代码如下:app.model.User.update({u id:req.locals.User.{u id},{$addToSet:{chatid:{mid:req.body.value}}}},function(err,result){if(result)console.log(result);});完成此操作后,setid现在开始工作。非常感谢您的帮助,我发现它非常有用。我将代码修改为:app.model.User.find({“chatid”:{$elemMatch:{“\u id”:req.body.value}}}}}代码现在完全可以工作了。我非常感谢您的帮助!注意:将mid更改为{u id]。
 app.model.User.update(
               { _id: req.locals.user._id },
               { $addToSet: { chatid: [{mid: req.body.value}]}  } 
            );