Обновление поля в соответствующем массиве в монго - PullRequest
0 голосов
/ 11 мая 2018

Я недавно переключился с 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'

У кого-нибудь есть идея, как я могу изменить состояние в массиве участников для пользователя, указанного в запросе?

Спасибо

...