亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

只需要更新java中mongo數組中的特定元素

只需要更新java中mongo數組中的特定元素

牧羊人nacy 2022-11-02 10:50:54
我想用過濾器更新 mongo 數組中的特定元素。我已經嘗試過使用BasicDBObject,但不能使用過濾器,因為我有類型的集合MongoCollection。MongoCollection collection = db.getCollection(tnId);甚至嘗試過:FindIterable<Document> document = collection.find(new BasicDBObject("DocumentName", documentName)                       .append("Attributes.name", "Party 1" ).append("Attributes.value", 12)                   .append("Attributes.actualValue.initialValue", USA));但在這種情況下,我得到的是整個記錄,而且我必須再次遍歷每個屬性。mongo = new MongoClient("localhost", 27017);MongoDatabase db = mongo.getDatabase(companyName);MongoCollection collection = db.getCollection(tnId);我傳遞的實際數據是{    "DocumentName" : "doc1",    "Attributes" : [         {            "name" : "Party 1",            "value" : 12,            "actualValue" : {                "initialValue" : "USA"            }        },         {            "name" : "Party 1",            "value" : 16,            "actualValue" : {                "initialValue" : "SYSTEM"            }        }    ]}我想搜索actualValue為“USA”且屬性值為12的屬性,更新后的數據應如下所示{    "DocumentName" : "doc1",    "Attributes" : [         {            "name" : "Party 1",            "value" : 12,            "actualValue" : {                "initialValue" : "USA"            },            "updatedvalue" : {                "initialValue" : "USA",                "changedValue" : "Europe"             }        },         {            "name" : "Party 1",            "value" : 16,            "actualValue" : {                "initialValue" : "SYSTEM"            }        }    ]}
查看完整描述

3 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

我是怎么做的。我制作了一個文檔,在其中添加了我想要更新的所需數據。說


Document valueDocument = new Document();


valueDocument.put("InitialValue", USA);


BasicDBObject query = new BasicDBObject();

query.put("Attributes", att);


BasicDBObject data = new BasicDBObject();

data.put("Attributes.$.updatedvalue" + qCLevel, valueDocument);


BasicDBObject command = new BasicDBObject();

command.put("$set", data);

collection.updateOne(query, command);

它會在正確的位置插入數據。


查看完整回答
反對 回復 2022-11-02
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

試試這個


db.collection.updateMany(

 { "Attributes.actualValue.initialValue": "USA" },

 { $set: { "Attributes.$.updatedvalue" : {

            "initialValue" : "USA",

            "changedValue" : "Europe"

         } } }

)


查看完整回答
反對 回復 2022-11-02
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

db.collection.findOneAndUpdate({ "Attributes.actualValue.initialValue": "USA" }, 

  { $set: { "Attributes.$.updatedvalue.initialValue": "USA",      "Attributes.$.updatedvalue.changedValue": "Europe" } })



db.collection.findOneAndUpdate({ "Attributes.actualValue.initialValue": "USA" }, { $set: { "Attributes.$.updatedvalue.initialValue": "India", "Attributes.$.updatedvalue.changedValue": "印度” } })


查看完整回答
反對 回復 2022-11-02
  • 3 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號