MongoDB 修改子集(集合)中某条数据的属性值

前提

   我在项目中需要修改mongoDB中的一条记录的子集属性,如下:

{
    "_id" : ObjectId("5c875d13bfb42a9cb35b8c73"),
    "Product_Id" : "121-00738",
    "ProductGroups" : [
        {
            "Product_Id" : "121-00738",
            "Prod_Grp_Type" : "BIGR",
            "Product_Group" : "10207111"
        }
    ]
}

我要修改ProductGroups下Product_Group的值。

解决方法

db.collection.update({"ProductGroups.Product_Id":"121-00738","Prod_Grp_Type" : "BIGR"}, { $set : {"ProductGroups.$.Product_Group":"value" }})

Java  中解决方法:

Query oFilter = Query.query(Criteria.where("Product_Id").is("121-00738"));
			oFilter.addCriteria(Criteria.where("ProductGroups.Product_Id").is("121-00738"));
			oFilter.addCriteria(Criteria.where("ProductGroups.Prod_Grp_Type").is("BIGR"));

Update update =new Update();
update.set("ProductGroups.$.Product_Group", "value");
//执行
BulkOperations bulkOperations=mongoTemplate.bulkOps(BulkMode.UNORDERED, collectionName);
		BulkWriteResult result=bulkOperations.updateOne(query, update).execute();

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值