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

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

我無法在java中復制mongo數組的更新

我無法在java中復制mongo數組的更新

開心每一天1111 2023-08-09 15:45:58
我有一個具有以下結構的數據庫:{    "_id" : ObjectId("5d54608122474f8d2927d898"),    "NOMBRE_HOST" : "Base1",    "IsContingenciaODA" : "false",    "puerto" : "1532",    "HostContigencia" : "Base2",    "BASEDATOS" : [        {            "SID" : "REPOS",            "IsContingenciaBD" : "false",            "host" : "Base3",            "puerto" : "1111"        },        {            "SID" : "PRODM2",            "IsContingenciaBD" : "false",            "host" : "nb",            "puerto" : "1111"        },        {            "SID" : "PRODM3",            "IsContingenciaBD" : "true",            "host" : "Base4",            "puerto" : "999"        }    ]}{    "_id" : ObjectId("5d54608122474f8d2927d899"),    "NOMBRE_HOST" : "172.0.0.1",    "IsContingenciaODA" : "false",    "puerto" : "1532",    "HostContigencia" : "172.10.0.1",    "BASEDATOS" : [        {            "SID" : "Base6",            "IsContingenciaBD" : "false",            "host" : "172.7.0.1",            "puerto" : "999"        }    ]}我需要更新嵌入文檔的IsContingenciaBD參數。在 mongo 中更改此值的查詢如下:db.PropertiesMQ.update({"NOMBRE_HOST" : "Base1", "BASEDATOS.SID" : "PRODM3"}, {$set: {"BASEDATOS.$.IsContingenciaBD" : "true"}})我嘗試使用以下代碼在 java 中復制此查詢:        MongoClient client = new MongoClient("my_ip", "my_port");        MongoDatabase mongodb = client.getDatabase("prueba");        MongoCollection<Document> collection = mongodb.getCollection("PropertiesMQ");        BasicDBObject filter = new BasicDBObject();        filter.put("NOMBRE_HOST", host);        filter.put("BASEDATOS.SID", sid);        BasicDBObject data = new BasicDBObject();        data.put("BASEDATOS.$.IsContingenciaBD", state);        BasicDBObject command = new BasicDBObject();        command.put("$set", data);        System.out.println(filter + ", " + command);        collection.updateOne(filter, data);        client.close();執行時我收到以下錯誤:線程“main”中的異常 java.lang.IllegalArgumentException:無效的 BSON 字段名稱 BASEDATOS.$.IsContingenciaBD
查看完整描述

1 回答

?
泛舟湖上清波郎朗

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

看起來您在 updateOne 方法中使用了數據。相反,它應該是命令BasicDBObject。就像下面這樣,


    MongoCollection<Document> collection = mongodb.getCollection("PropertiesMQ");

    BasicDBObject filter = new BasicDBObject();

    filter.put("NOMBRE_HOST", host);

    filter.put("BASEDATOS.SID", sid);

    BasicDBObject data = new BasicDBObject();

    data.put("BASEDATOS.$.IsContingenciaBD", state);

    BasicDBObject command = new BasicDBObject();

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

    System.out.println(filter + ", " + command);

    collection.updateOne(filter, command); //Use Command instead of data


查看完整回答
反對 回復 2023-08-09
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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