2016-01-07 3 views
1

сначала я прошу прощения за мой английский :(
им новое в nodeJs и MongoDB и у меня есть проблема
я не могу добавить любой элемент в массив
Это то, что я пробовал:Невозможно обновить документ в MongoDB (хотят протолкнуть элемент в массиве)

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 } 
} 
+0

возможного дублирования -> http://stackoverflow.com/questions/33049707/push-items-into-mongo-array-via -mongoose? rq = 1 – admix

+0

'$ push' работает только для массивов. 'user_users' в вышеприведенном документе является объектом. –

+1

@ brian-shamblen да, вы правы, но теперь, как я могу это сделать? –

ответ

1

Следующая JSON:

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

не действует, потому что "член" является дублированный ключ. Что вы могли бы сделать, чтобы преобразовать user_users в массив пользователей и сделать что-то вроде этого:

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

, где каждый член user_users массива является документом. Вы бы тогда быть в состоянии сделать следующий запрос, чтобы добавить элементы в массив:

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

действительно помогает мне ♥ tnx –

Смежные вопросы