Mongoose/MongoDB:针对特定的子模式?

Posted

技术标签:

【中文标题】Mongoose/MongoDB:针对特定的子模式?【英文标题】:Mongoose/MongoDB: Targeting specific sub-schemas? 【发布时间】:2019-02-03 22:33:09 【问题描述】:

我在猫鼬中有以下架构:

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

假设一个典型的文本有大约 100 个句子。现在我在前端稍微修改了一个句子,需要将该更改发送到我的服务器/mongodb。我如何最好地使用 mongoose+rest api 来做到这一点?我会因为一个句子的变化而更新整篇文章吗?或者有没有办法让我只针对我想要更改的那句话?

PS:对不起,这个问题可能很基础,但对我有很大帮助!提前感谢您的回答!

【问题讨论】:

【参考方案1】:

不,您不需要更改整篇文章。您可以做的是,您可以通过使用句子 id 找到实际变化的句子并更新特定句子。您需要使用 findOneAndUpdate() 方法。

请参考以下查询

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

    
);

【讨论】:

以上是关于Mongoose/MongoDB:针对特定的子模式?的主要内容,如果未能解决你的问题,请参考以下文章

在 Mongoose/MongoDB 的文档中过滤数组、子文档、数组、文档

Mongoose Mongodb 查询对象数组

使用 Mongoose/MongoDB 构建我的模型

使用 JSON-Schema 定义模式并使用 Mongoose?

替换特定模式的子字符串

Mongoose / Mongodb 迁移到 MySQL