Как обновить MongoDB из Java с текущим временем БД?

1

Я хочу обновить базу данных mongo из моего приложения Java с текущим временем DBне временем JVM).

Если бы у меня была оболочка, я бы выполнил следующую команду:

db.colletion.update({_id : 'doc'}, {$set : { last_update : ISODate()}}, true, false);

Я не уверен, как перевести его в java:

Object lastUpdate = ???;
DBObject q = new BasicDBObject("_id", "doc");
DBObject o = new BasicDBObject("$set", new BasicDBObject("last_update", lastUpdate));
collection.update(q, o, true, false);

Я пытаюсь выяснить, какой должен быть объект lastUpdate.

Новый экземпляр Date не является вариантом, поскольку он будет представлять время JVM, а не время DB.
Я думал об использовании eval чтобы получить время от DB, но это будет стоить дополнительный запрос для каждого обновления.
Любые другие идеи?

Теги:
time

2 ответа

1
Лучший ответ

Единственный способ сделать это - использовать eval. Из документации eval:

Если вы хотите использовать интерпретатор серверов, вы должны запустить eval. В противном случае интерпретатор JavaScript-интерпретатора mongo оценивает функции, введенные непосредственно в оболочку.

даже команда, которую вы отправили, будет использовать время клиента, а не время сервера, потому что конструктор ISODate будет оцениваться на клиенте/оболочке.

2

Следующая версия MongoDB (2.6) поддерживает оператор update current current. Подробнее см. Http://docs.mongodb.org/master/release-notes/2.6/#write-operation-improvements.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню