gpt4 book ai didi

java - BasicDBObject 更新重复的同一文档

转载 作者:行者123 更新时间:2023-12-01 04:32:33 24 4
gpt4 key购买 nike

我的 api java mongodb 有一个大问题。我使用带有 DBCollection 类的更新方法的请求,在 mongodb 中我得到多个相同的文档,但值没有改变,请帮助我。我不想有重复的文档。

BasicDBObject query = new BasicDBObject();
query.append("ad", "man2ist").append("list.id", new BasicDBObject("$ne", "5")); // "list.id" : {$ne : 0 }

BasicDBObject a = new BasicDBObject("id",String.valueOf(5)).append("value", 100);
BasicDBObject upd = new BasicDBObject("$addToSet",new BasicDBObject("list",a));
System.out.println(query);

System.out.println(upd);

WriteResult r = dbc.update(query,upd,true,false);

//db.friends.update({ "ad" : "man2ist" , "list.id" : { $ne : "4"} },{ $addToSet : { "list" : { "id" : "4","value" : 100}}},true,true);

我的文档在这里:

{
"ad" : "man2ist",
"createdDate" : ISODate(),
"list" : [
{
"id" : "45",
"value" : 489
},
{
"id" : "5",
"value" : 20,

},
{
"id" : "4578",

"value" : 21,

} ]}

最佳答案

问题在于您将翻转标志设置为 true,这意味着如果未找到与条件匹配的文档,则应创建该文档。如果数据库中没有符合条件的文档,mongo shell 也会执行相同的操作。

如果您将查询更改为此,

WriteResult r = dbc.update(query,upd,false,false);

它应该一直有效。

关于java - BasicDBObject 更新重复的同一文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17838893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com