有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用当前数据库时间从Java更新MongoDB?

我想用当前DB时间(notJVM的时间)从Java应用程序更新mongo DB

如果我有一个shell,我将执行以下命令:

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的时间
我曾考虑过使用evalDB获取时间,但每次更新都需要额外的查询
还有其他想法吗


共 (2) 个答案

  1. # 2 楼答案

    唯一的方法是使用eval。从^{} documentation开始:

    If you want to use the server’s interpreter, you must run eval. Otherwise, the mongo shell’s JavaScript interpreter evaluates functions entered directly into the shell.

    即使您发布的命令也将使用客户机的时间,而不是服务器时间,因为ISODate构造函数将在客户机/shell上进行计算