2016-12-29 25 views
0

У меня есть данные, хранящиеся в моем db. Вариант использования: пользователь может выбрать дату и обновить возраст или имя навалом. Как будет выглядеть запрос?данные о массовом обновлении в mongodb

[ 
    { 
     date:'1-1-2016', 
     users:[ 
      { 
       'name':'james', 
       'age':18 
      }, 
      { 
       'name':'alice', 
       'age':20 
      } 
     ] 
    }, 
    { 
     date:'2-1-2016', 
     users:[ 
      { 
       'name':'james', 
       'age':18 
      }, 
      { 
       'name':'alice', 
       'age':20 
      }, 
      { 
       'name':'xiaomi', 
       'age':29 
      } 
     ] 
    } 
] 

Я использовал этот Users.update({date:'1-1-2016','user.name':'james'},{'$set':'users.$.age':5}}) , но это не массовое обновление, он обновляет только один документ.

ответ

1

Вы можете установить несколько истинных опций в обновлении mongodb

ex. если вы хотите обновить использование нескольких документов

Пользователи.update ({date: '1-1-2016', 'user.name': 'james'}, {'$ set': 'users. $. age ': 5}}, {много: истинный})

, но если есть много мест, чтобы соответствовать Используйте

Users.update ({дата: {$ в: [ '1-1-2016',' 1-2-2016 ']},' user.name ':' james '}, {' $ set ':' users. $. Age ': 5}}, {multi: true})

+0

' $ in' здесь смысл, в конце концов я получил от вас большое спасибо! –

+0

Как я уже отмечал, 'update' является устаревшей функцией. Пожалуйста, не используйте его в значащем коде! – Dmitry

+0

@DmitryFrolov, что мне тогда использовать? –

-1

Вы можете использовать updateMany. Это специальная функция для массового обновления. Обратите внимание: update - deprecated.

+0

, пожалуйста, покажите некоторые коды. –

+0

Пример: 'db.collection ('A'). UpdateMany ({" repetitions.today ": {$ gt: 0}}, {$ set: {" repetitions.today ": 0} });'. Я думаю, что в вашем случае вам просто нужно заменить 'update' на' updateMany'. Пожалуйста попробуйте? – Dmitry

+0

не так просто. Мой единственный запрос принимает одну дату, как это работает, когда пользователь выбрал несколько дат? –

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