0

我最近从 java mongo 驱动程序 3.1 切换到 3.4,试图在 azure 上使用 Cosmo db api for mongo。尝试在数组中修改和字段时,我遇到了驱动程序问题。

我的 mongo 对象看起来像这样

{
    "_id" : ObjectId("5af4d4e97bad4700076d7aea"),
    "URI" : "v3egoun@myip"  
    },
    "record" : false,
    "active" : true,
    "audioonly" : true,
    "environment" : "dev",
    "participants" : [
        {
            "user" : "test1.medocity@test.org",
            "state" : "pending",
            "callid" : "null",
            "host" : true
        },
        {
            "user" : "test2.medocity@test.org",
            "state" : "pending",
            "callid" : "74ff79f83c375355058838a1b8d0ec03@test.org",
            "host" : false
        }
    ]
}

我希望为匹配查询的用户修改数组中 state 和 callid 的变量:

       BasicDBObject query = new BasicDBObject();
        query.put("URI", URI);
        query.put("participants.user", FROMURI);
        BasicDBObject data = new BasicDBObject();
       data.put("participants.$.state", newstate.toString());
       data.put("participants.$.callid", XMScallid);


       BasicDBObject command = new BasicDBObject();
       command.put("$set", data);
    table.updateOne(query, command);

截至目前,我收到以下错误。

线程“Thread-13”com.mongodb.MongoWriteException 中的异常:BSON 字段名称“participants.$.state”无效

任何人都知道如何为查询中提供的用户修改参与者数组中的状态?

谢谢

4

0 回答 0