Как обновить определенный ключ определенной записи в MongoDB

#node.js #mongodb #express

Вопрос:

Я храню некоторые Article в MongoDB. Под статьей я подразумеваю эту структуру:

 const articleSchema = new Schema({
    articleid: String,
    title: String,
    content: String,
    date: String,
    contributor: String,
    upvotes: Number,
    upvoters: [String], //<--------- I NEED HELP WITH THIS
    downvotes: Number,
    downvoters: [String]
})
 

Я создаю API в NodeJS. Используя эту конечную точку, я хочу добавить текущего пользователя, который будет добавлен в upvoters массив в MongoDB:

 router.post('/upvoted/:articleid/:userid', (req, res) => {
    Article.findOneAndUpdate({ articleid: req.params.articleid }, { upvoters: ["req.params.userid"] }, (failure, success) => {
        if (success) {
            res.status(200).send("done")
        }
        else {
            res.status(200).send("not done")
        }
    })
})
 

Моя проблема в том, что массив полностью заменяется. Я хочу добавить этого пользователя в тот же upvoters массив в MongoDB.

Ответ №1:

Используйте $push оператор для добавления элемента в массив.

 Article.findOneAndUpdate({ articleid: req.params.articleid }, { $push: { upvoters: req.params.userid }}, (failure, success) =>...
 

Вы можете прочитать больше здесь

Комментарии:

1. сработало как заклинание. Я принимаю это как стандартный ответ

2. Однако я также просматривал ту же документацию, но я как-то пропустил эту вещь

3. что делать, если я хочу удалить один элемент?