📜  从每个子文档中删除特定键 (1)

📅  最后修改于: 2023-12-03 14:49:26.182000             🧑  作者: Mango

从每个子文档中删除特定键

在 MongoDB 中,一个文档可以包含许多字段,但是有时我们需要在所有子文档或者文档中删除某些字段。这篇文章将会教你如何从每个子文档中删除特定键。

操作方法

我们可以使用 MongoDB 的 update() 方法来删除文档中的某个键。在子文档中,需要使用 $unset 操作符来删除键。

以下代码演示了如何从每个子文档中删除名为 "key1" 的键:

db.collection.update({}, {$unset: { "key1" : "" }}, {multi: true})

这里,我们将数据库的 collection 传递给 update 方法。然后我们使用 $unset 操作符从每个子文档中删除名为 "key1" 的键。将 multi 参数设置为 true 可以将操作更新应用于 collection 中的所有文档。

示例

假设你有以下的 document sample,它包含了两个子文档:

{
   "_id" : ObjectId("5d0ec687045c050a6439efa9"),
   "name" : "John",
   "age" : 25,
   "address" : {
      "street" : "Street 123",
      "city" : "New York",
      "state" : "NY",
      "zipcode" : "12345"
   }
},
{
   "_id" : ObjectId("5d0ec68f045c050a6439efaa"),
   "name" : "Mary",
   "age" : 30,
   "address" : {
      "street" : "Street 456",
      "city" : "San Francisco",
      "state" : "CA",
      "zipcode" : "67890"
   }
}

使用以下代码将从每个子文档中删除 "zipcode" 键:

db.sample.update({}, {$unset: { "address.zipcode" : "" }}, {multi: true})

这将更新所有文档,从 "address" 子文档中删除 "zipcode" 键。

修改后的文档如下所示:

{
   "_id" : ObjectId("5d0ec687045c050a6439efa9"),
   "name" : "John",
   "age" : 25,
   "address" : {
      "street" : "Street 123",
      "city" : "New York",
      "state" : "NY"
   }
},
{
   "_id" : ObjectId("5d0ec68f045c050a6439efaa"),
   "name" : "Mary",
   "age" : 30,
   "address" : {
      "street" : "Street 456",
      "city" : "San Francisco",
      "state" : "CA"
   }
}

可以看到 "zipcode" 键已经被成功地从每个子文档中删除了。

总结

以上就是从每个子文档中删除特定键的方法。通过使用 update() 方法和 $unset 操作符,可以快速轻松地删除任何文档中的特定键。