Я недавно переключился с java mongo driver 3.1 на 3.4 в попытке использовать Cosmo db api для 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
}
]
}
Я хочу изменить переменные для состояния и 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 'участники. $. State'
У кого-нибудь есть идея, как я могу изменить состояние в массиве участников для пользователя, указанного в запросе?
Спасибо