Hamet Gholizadeh
Hamet Gholizadeh

Reputation: 267

Can't update document in mongodb (want to push item in array)

at first i apologize for my english :(
im new at nodeJs and mongodb and i have a problem
I can't add any item into array
This is what i tried:

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

and i also tried this:

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

i want to work like this :

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

Upvotes: 3

Views: 1677

Answers (1)

Louis F.
Louis F.

Reputation: 2048

The following JSON :

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

is not valid, because "member" is a duplicated key. What you could do is to transform user_users to an array of users and do something like this :

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

where each member of the array user_users is a document. You would then be able to do the following query to add members to your array :

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

Upvotes: 4

Related Questions