Как обновить только одно свойство в MongoDB, используя Mongoose? - PullRequest
2 голосов
/ 31 октября 2019

Это моя модель:

import mongoose from 'mongoose';

const UserData = new mongoose.Schema({
    additionalData: Array,
    name: String,
});
mongoose.model('UserData', UserDataSchema);
mongoose.set('useFindAndModify', false);

export default mongoose.model('UserData');

Как мне обновить свойство additionalData модели UserData, чтобы, например, был добавлен другой массив.

Допустим, дополнительный массив равен

[ 1, 2, 3]

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Вы можете использовать $ addToSet

await UserData.update({name:"something"},{ $addToSet: { additionalData: [1,2,3] })

или

await UserData.updateOne({name:"something"},{ $addToSet: { additionalData: [1,2,3] })

Если вы не выполните никаких условий, это добавит ко всем документам

await UserData.update({},{ $addToSet: { additionalData: [1,2,3] })

Если вы хотите удалить несколько значений из массива, используйте $ pull

await UserData.update({},{ $pull: { additionalData: { $in: [ 1, 2,3 ] }}})

Если вы хотите удалить одно значение

await UserData.update({},{ $pull: { additionalData:1 }})
0 голосов
/ 31 октября 2019

Если вы не это имеете в виду, дайте мне знать в комментариях, я отредактирую ответ.

const newArray = [ 1, 2, 3];
const nameToUpdate = 'foo';
mongoose.model('UserData').updateMany({
    name: nameToUpdate
}, {$set: {
    additionalData: newArray
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...