MongoDB 3.4 Upsert не вставляется

Попробуйте следующее в оболочке Mongo (и попробовали на Java), чтобы обновить или вставить документ. Фильтр должен возвращать false, но я ожидаю, что документ будет создан из-за upsert = true

db.eventLogs.updateOne(
                      {monthid:"062017", elementid:123456},
                      {$push: {
                               events: {sensor1:"sensor1 value",
                                        sensor2:"sensor2 value"
                                       } 
                              } 
                      }, 
                      {Upsert:true} )

Оператор подтверждается, но в коллекцию ничего не вставляется, хотя Upsert = true.

Я явно идиот, так может ли кто-нибудь избавить меня от моих страданий?

Ява-версия...

 Bson filter = Document.parse(argFilterJson);
 Bson operations = Document.parse(argOperationsJson);
 UpdateOptions options = new UpdateOptions().upsert(true);

 return this.getCollection(argDBName, argCollectionName).updateOne(filter, operations, options);

Значения argFilterJson и argOperationsJson точно соответствуют оболочке.


person Andrew Harris    schedule 27.02.2017    source источник
comment
Попробуйте изменить Upsert на upsert   -  person s7vr    schedule 27.02.2017
comment
Как предложил Veeram, он должен быть upsert, а не Upsert для Mongo Shell, однако он по-прежнему не работает при использовании драйвера Java. Я добавил код Java выше.   -  person Andrew Harris    schedule 28.02.2017


Ответы (1)


Как ни странно, после перезапуска моего сервера MongoDB код Java начал работать, как и ожидалось.

person Andrew Harris    schedule 28.02.2017