无法在mongodb中更新文档(想要将项推入数组)

3

首先很抱歉我的英语不好 :(
我是新手学习NodeJsMongoDB,现在遇到了一个问题
我无法向数组中添加任何项目
这是我的尝试:

db.conversations.update({userID: memberID} ,{
       "user_users" : {
           $push : { "member": userID } // this does not work :((
          }
         });

我也尝试了这个:

db.conversations.user_users = {
            $push : {
                 member: memberID
             }
            };
            db.conversations.save();

我希望像这样工作:

{
"_id" : conversationID,
"userID" : userID,
"user_users" : { "member" : memberID,  "member" : memberID }
}  

可能重复 -> https://dev59.com/yVwY5IYBdhLWcg3wEER2?rq=1 - admix
$push 仅适用于数组。上述文档中的 user_users 是一个对象。 - Brian Shamblen
2
@brian-shamblen 是的,你说得对,但现在我该怎么做呢? - Hamet Gholizadeh
1个回答

4
以下是JSON格式的示例:
{
    "_id": conversationID,
    "userID": userID,
    "user_users": {
        "member": memberID,
        "member": memberID
    }
}

不是有效的,因为“member”是一个重复的键。你可以将user_users转换为用户数组,并执行以下操作:

{
    "_id": conversationID,
    "userID": userID,
    "user_users": [
        {
            "member": memberID
        },
        {
            "member": memberID
        }
    ]
}

在这里,数组user_users的每个成员都是一个文档。然后,您可以执行以下查询来向数组添加成员:

db.conversations.update(
    {userID: memberID} ,
    {$push : {"user_users" : { "member": userID }}}
)

2
真的帮了我很多,谢谢。 - Hamet Gholizadeh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接