2017-02-09 4 views
4

Я пытаюсь обновить MongoDB документ с мангустом в node.jsИспользования мангуста для добавления нового поля к существующему документу в MongoDB через метод обновления

Когда поле существует, то обновление работает, но если поле делает не существует, обновление не будет работать.

Я хочу добавить новые поля в документ.

запрос MongoDB (https://docs.mongodb.com/v3.2/reference/operator/update/set/#behavior) работает:

db.getCollection('users').update({ 'uid': 'uid' }, { $set: { 'vehicle_status': 'bike' } }) 

Но это не будет работать, если сделано в мангуста. Использование $ set не добавляет поля.

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true }) 
+0

Я нашел soultion. http://stackoverflow.com/questions/23959287/add-a-field-to-existing-mongodb-document-with-mongoose-in-node-js?rq=1 модель не определена новый. Я добавляю новую поданную в модель. и добавить поданную работу. – sabper

+0

Хорошо, полезно знать. Пожалуйста, постарайтесь высказать все возможное, когда публикуете свои вопросы здесь, поскольку они могут быть полезны многим людям, и это помогает им хорошо их понять :) Нужно иметь поле в вашей модели –

ответ

4

Попробуйте следующий код:

User.update(
    {uid: 'uid'}, 
    {vehicle_status : 'vehicleSatus' }, 
    {multi:true}, 
     function(err, numberAffected){ 
     }); 

Кроме того, убедитесь, что вы добавляете vehicle_status к схеме.

+0

Есть ли способ сделать это без изменения схемы? –

+0

Marwan Ossama, вам это не нужно в схеме, потому что схема определяет структуру документа. Я думаю, если бы у вас не было доступа к схеме, вы могли бы использовать существующее поле и, возможно, сохранить строку в существующем поле, но это не очень хорошее решение, но иногда у вас нет выбора, если вы находитесь на система с закрытым исходным кодом или что-то в этом роде. Однако в этом случае вышеуказанный код не имеет значения. –