Mongoose / MongoDB: Таргетинг на конкретные подсхемы? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующая схема в мангусте:

const textSchema = new Schema({
  title: { type:String, unique: true },
  sentences: [SentenceSchema],
})

Предположим, что типичный текст содержит около 100 предложений. Теперь я немного изменил одно предложение во внешнем интерфейсе, и мне нужно отправить это изменение на мой сервер / mongodb. Как бы я лучше всего это сделать с mongoose + rest api? Буду ли я обновлять всю статью из-за изменения в одном предложении? Или я могу выбрать только то предложение, которое я хочу изменить?

PS: Извините, этот вопрос, вероятно, довольно простой, но он очень мне поможет! Заранее спасибо за ваши ответы!

1 Ответ

0 голосов
/ 29 августа 2018

Нет, вам не нужно менять всю статью. Что вы можете сделать, так это найти предложение, которое действительно изменяется, используя идентификатор предложения и обновить конкретное предложение. Вам необходимо использовать метод findOneAndUpdate ().

Пожалуйста, обратитесь ниже запрос

Text.findOneAndUpdate(
    { "_id": textId, "sentences._id": updatedSentenceId },
    { 
      "$set": {
        "sentences.$": updatedSentence
       }
    },
    function(err,doc) {

    }
);
...