MongoDBmongosh更新


更新文档

要更新现有文档,我们可以使用updateOne()或者updateMany()方法。

第一个参数是一个查询对象,用于定义应更新哪个或哪些文档。

第二个参数是定义更新数据的对象。


updateOne()

这个updateOne()方法将更新找到的与所提供的查询匹配的第一个文档。

让我们看看对于标题为 "Post Title 1" 的帖子,"like" 的计数是多少:

示例

db.posts.find( { title: "Post Title 1" } ) 
亲自试一试 »

现在让我们将这篇文章中的 "likes" 更新为 2。为此,我们需要使用$set运算符。

示例

db.posts.updateOne( { title: "Post Title 1" }, { $set: { likes: 2 } } ) 
亲自试一试 »

再次检查文档,您将看到 "like" 已更新。

示例

db.posts.find( { title: "Post Title 1" } ) 
亲自试一试 »

如果没有找到则插入

如果您想在未找到该文档的情况下插入该文档,您可以使用upsert选项。

示例

更新文档,但如果找不到则插入它:

db.posts.updateOne( 
  { title: "Post Title 5" }, 
  {
    $set: 
      {
        title: "Post Title 5",
        body: "Body of post.",
        category: "Event",
        likes: 5,
        tags: ["news", "events"],
        date: Date()
      }
  }, 
  { upsert: true }
)
亲自试一试 »

updateMany()

这个updateMany()方法将更新与所提供的查询匹配的所有文档。

示例

更新likes在所有文档上按 1。为此,我们将使用$inc(增量)运算符:

db.posts.updateMany({}, { $inc: { likes: 1 } })
亲自试一试 »

现在检查所有文档中的点赞数,您会发现它们都已增加了 1。