类似的问题还有很多。但与我面临的问题并不完全相同。我几乎看过所有围绕它的问题和答案
所以问题是
我必须在我的 mongo 集合中插入一个日期字段
但我无法直接访问该集合。我必须使用一项服务。该服务接受一个字符串并返回给我 oid。
因此,一旦我构造了 BasicDBObject,我就对其调用 toString 并将其传递给我的服务。我什至尝试将其直接插入到测试集合中,但 mongo 正在提示。
BasicDBObject document = new BasicDBObject();
long createdAtSinceEpoch = 0;
long expiresAtSinceEpoch = 0;
createdAtSinceEpoch = System.nanoTime();
Date createdAt = new Date(TimeUnit.NANOSECONDS.toMillis(createdAtSinceEpoch));
document.append("createdAt", createdAt);
expiresAtSinceEpoch = createdAtSinceEpoch + +TimeUnit.SECONDS.toNanos(30);
Date expiresAt = new Date(TimeUnit.NANOSECONDS.toMillis(expiresAtSinceEpoch));
document.append("expiresAt", expiresAt);
service.storeRecord(document.toString());
生成的 JSON 字符串如下所示
{
"createdAt": {
"$date": "2015-09-01T20:05:21.641Z"
},
"expiresAt": {
"$date": "2015-09-01T20:05:51.641Z"
}
Mongo 提示说
Unable to parse JSON : Date expecting integer milliseconds, at (3,17)
因此,如果我在 document.append() 方法中单独传递毫秒而不是日期对象,那么它不会将此字段识别为日期,并将其视为字符串,而是插入到集合中
我需要两件事
1) 我想要插入数据 2)我计划通过向 expiresAt 字段添加索引来使该行过期。所以我想让 mongo 认识到它是一个日期字段
最佳答案
JSON 区分数字字段和包含数字的文本字段。后一个仅被识别为String
;我假设这就是您在为服务提供整数日期时所做的事情。不幸的是,您没有向我们展示相关代码。
关于java - 如何从java在mongo db中插入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32340329/