我最近从 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”无效
任何人都知道如何为查询中提供的用户修改参与者数组中的状态?
谢谢