第一次写博客,记录自己作为一个程序员成长中遇到的坑
事情是这样的 我要修改一条比较复杂的数据类似于
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最终成功了
怎么说呢 虽然最后做出来了 但是没有哦弄懂这时怎么回事,感觉有些遗憾。希望哪位大神看到了能给解除一下疑惑。万分感谢!