java操作mongodb时修改了下一条上一条修改内容被回滚

第一次写博客,记录自己作为一个程序员成长中遇到的坑

事情是这样的  我要修改一条比较复杂的数据类似于

date{
    obj1:[
        {
          name:XX,
          age:12
         },
        {
          name:张三,
          age:12
         },
        {
          name:XX,
          age:12
         },
        {
          name:李四,
          age:12
         },
            ...
    ],
    obj2:[{
          name:XX,
          age:12
         },
        {
          name:XX,
          age:12
         },].

}

我要修改obj1下的name:张三和name:李四的对象,我一开始觉得obj1数组里的对象太多了,想要通过

Bson project = Projections.include("Time", "ProjectId", "Data."
        + "Electricity" + ".$");

直接定位到那个张三或者李四对象减少查询内容使程序查询速度快一点,但是这样查出来用coll.replaceOne(filter, newDoc, options)去修改的时候老是报错_id  有问题,

后来觉得自己水平不行就直接查所有数据不精确查询再去修改了,查到整条数据,遍历循环先找到张三的对象操作数据库修改,在找到李四对象操作数据库修改,这时发现我对张三的修改回到了修改之前,查了半天也没找到说mongodb有什么事物啊,

再后来没办法改成了我循环找到张三对象只在代码中修改,但是不操作数据库,然后在找到李四对象在代码中修改,等跳出循环了  用

coll.replaceOne(filter, newDoc, options);直接操作数据库一次性改好这一条的Doc最终成功了

 

怎么说呢 虽然最后做出来了  但是没有哦弄懂这时怎么回事,感觉有些遗憾。希望哪位大神看到了能给解除一下疑惑。万分感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值