如何解决使用java从mongoDb中删除嵌入的文档
我有以下文档,并且需要在 micronaut 应用程序中使用 MongoClient 从嵌入文档中删除 Array 项。
我想删除带有 _id = 6044c50484116e3dfdc39d1b
的项目
{
"_id": "6033c4b184116e3dfdc39d1a","description": "Men description","name": "Men","subCategory": [{
"name": "Sub category 1","description": "Sub category description 4","_id": "6033c50484116e3dfdc39d1b"
},{
"name": "Sub category 2","description": "Sub category description 5","_id": "6044c50484116e3dfdc39d1b"
}
]
}
我们可以将 $unset
与 BSON 一起使用,如下所示
Bson query = and(eq("_id",new ObjectId("6033c4b184116e3dfdc39d1a")),eq("subCategory._id"),new ObjectId("6033c50484116e3dfdc39d1b")));
Single.fromPublisher(
this.repository.getCollection(ConstantValues.PRODUCT_CATEGORY_COLLECTION_NAME,Category.class)
.updateOne(query,new Document("$unset",array))).subscribe();
不确定如何将值传递给 array
或者有更好的方法吗?
解决方法
这对我有用
Bson query = and(
eq("_id",new ObjectId("6033c4b184116e3dfdc39d1a")),eq("subCategory._id",new ObjectId("6033c50484116e3dfdc39d1b"))
);
Single.fromPublisher(
this.repository.getCollection(ConstantValues.PRODUCT_CATEGORY_COLLECTION_NAME,Category.class)
.updateOne(query,new Document("$pull",new Document("subCategory",new Document(String.format("_%s","id"),new ObjectId(id))
))
)).subscribe();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。