我在 mongodb 中嵌入了文档,如何只删除一个地址,其中 pincode 为 140901 并更新 pincode 为 152364 的地址
db.add_fun.insert({
"_id" : ObjectId("5a82e6dc1139b572569fa785"),
"name" : "Vikas",
"salary" : 72.0,
"address" : [
{
"address_id" : ObjectId("5a82f0e51139b572569fa78c"),
"address" : "Mullanpur ",
"pincode" : "140901",
"country" : "India"
},
{
"address_id" : ObjectId("5a82f0e51139b572569fa78d"),
"address" : "mohali ",
"pincode" : "152364",
"country" : "India"
}
]
})
我尝试了这个,但不工作
db.add_fun.update({},
{
$pull: {
address: {
$elemMatch: {
pincode: "140901"
}
}
}
},
{
multi:true
}
)
想删除这个
{
"address_id" : ObjectId("5a82f0e51139b572569fa78c"),
"address" : "Mullanpur ",
"pincode" : "140901",
"country" : "India"
},
想要这个结果
{
"_id" : ObjectId("5a82e6dc1139b572569fa785"),
"name" : "Vikas",
"salary" : 72.0,
"address" : [
{
"address_id" : ObjectId("5a82f0e51139b572569fa78d"),
"address" : "mohali ",
"pincode" : "152364",
"country" : "India"
}
]
}
最佳答案
不需要$elemMAtch
,只是数组中子文档的条件。在你的情况下:
db.add_fun.update(
{},
{ $pull: {
address: {
pincode: "140901"
}
} },
{ multi:true }
);
文档:https://docs.mongodb.com/manual/reference/operator/update/pull/
https://stackoverflow.com/questions/48768771/
相关文章:
node.js - mongoose.connection.collections.collecti
node.js - 学习 NodeJS 和 MongoDB Docker 组合
java - Spring - mongodb - 聚合 - 需要 'cursor' 选项
linux - 从 bash 提示符和脚本向 docker exec 传递参数
c# - 如何将 MongoDB 驱动程序与 C# ASP.NET Core API 框架一起使用?
java - Spring Data Mongodb 的性能问题