我对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,
} ]}
答案 0 :(得分:0)
问题是您将upset标志设置为true,这意味着如果找不到符合条件的文档,则应创建文档。如果没有与db中的条件匹配的文档,mongo shell将执行相同的操作。
如果您将查询更改为此,
WriteResult r = dbc.update(query,upd,false,false);
它应该一直有效。