【问题标题】:How to insert a document with date in mongo?如何在mongo中插入带有日期的文档?
【发布时间】:2014-08-20 10:43:36
【问题描述】:

我们正在尝试插入一个具有当前日期的文档作为它的字段。我们正在使用 mongodb 的 eclipse 插件在 java 中编写。我们要执行 mongo 的Date() 命令,从 mongo 而不是从 java 中获取日期。

如何执行这个 mongo 查询?

db.example.insert({"date":new Date()})

我在预览问题中发现了这个问题,但答案没有帮助

Link

【问题讨论】:

  • "eclipse plugin for mongodb" 提供了许多不同的谷歌点击。你能把它缩小到一个特定的产品吗?
  • mongo-java-driver-2.12.0-rc2.jar
  • 这个问题还没有解决。我无法使用以下任何解决方案使用 java 来实现同样的目标

标签: java eclipse mongodb mongodb-query


【解决方案1】:

标准驱动采用java.util.date 类型并序列化为 BSON 日期。所以用一个集合对象来“示例”

Date now = new Date();

BasicDBObject timeNow = new BasicDBObject("date", now);
example.insert(timeNow);

如果您正在寻找一种在操作中使用“服务器”时间的方法,可以使用 $currentDate 操作符,但这适用于“更新”,因此您需要一个“更新插入”操作:

 BasicDBObject query = new BasicDBObect();
 BasicDBObject update = new BasicDBObject("$currentDate",
     new BasicDBObject("date", true)
 );

 example.update(query,update,true,false);

由于这实际上是一条更新语句,因此如果您打算仅将其用作插入语句,则需要注意您实际上并未匹配任何文档。因此,最好确保您的“查询”包含唯一信息,例如新生成的_id 或同样唯一的信息。

【讨论】:

  • 这会从当前工作的机器中获取日期。假设 mongo 在另一台服务器上运行,并且时间差很小,我想在另一台机器上显示日期,所以即使是一分钟左右我也能看到差异
  • @Candroid 你确实应该确保时间是同步的,但是有一种方法可以使用服务器时间。
【解决方案2】:

你可以试试这样:

db.example.insert({"date":ISODate("2016-03-03T08:00:00.000")});

【讨论】:

  • 如果您写ISODate(),该字段将是当前(插入时)日期时间。
  • 哪个 jar 提供了 ISODate() 类
  • @Nicksxs :我认为这应该适用于 node.js/shell 或其他,但不适用于 java 代码..
【解决方案3】:

使用这个:

db.example.insert({"date":new Date(Date.now())});

【讨论】:

  • 我需要用java写。如何使用 mongo 插件在 java eclipse 中编写这个?我尝试使用“命令”,但它不起作用
  • 你能解释一下你的答案吗?
  • 你写的命令是为 mongo shell 写的。我想用java语言执行这个命令,所以我的问题是怎么做?什么是正确的语法?
  • Mongo 文档提供了插入日期的标准方法。 docs.mongodb.org/getting-started/java/insert
  • 文档没有解决这个问题。请问有人用java做过吗
猜你喜欢
  • 2012-11-25
  • 2018-03-22
  • 1970-01-01
  • 2011-03-27
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多