我有api java mongodb的一個大問題。我使用DBCollection類的更新方法的請求,並在MongoDB中,我得到一個多個相同的文件,而價值不變,請幫助我。我不想有一個重複的文件。BasicDBObject更新重複相同的文檔
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,
} ]}
你能解釋一下你想要做什麼以及你的收藏文件是怎麼樣的? – innoSPG
與終端中的mongo shell,這是工作,但與mongo java驅動程序,當我更新文件與upsert選項,我得到一個重複的文件。也許這是java mongo驅動程序中的錯誤,但通常情況並非如此。我想更新我的文件,如果已經存在,我不會創建,但我更新他,如果他不存在我創建他,謝謝。 – jonn
在討論java驅動程序中的錯誤之前(不排除它),你能用簡單的英語來解釋你想要更新哪個文件。我的意思是文件應該滿足要更新的條件。有時候,問題就在於操作者被蒙上了一層薄霧,尤其是當您的操作與一個司機而不是其他司機合作時。 – innoSPG