如何使用当前数据库时间从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的时间
我曾考虑过使用eval
从DB
获取时间,但每次更新都需要额外的查询
还有其他想法吗
# 1 楼答案
MongoDB的下一个版本(2.6)支持$currentDate更新操作符。详见http://docs.mongodb.org/master/release-notes/2.6/#write-operation-improvements
# 2 楼答案
唯一的方法是使用} documentation 开始:
eval
。从^{即使您发布的命令也将使用客户机的时间,而不是服务器时间,因为
ISODate
构造函数将在客户机/shell上进行计算