📅  最后修改于: 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 操作符,可以快速轻松地删除任何文档中的特定键。