2017-02-28 67 views
0

我通过从Mongo驱动程序中使用静态分析方法将pojo转换为文档对象来插入文档。Java到Mongo文档日期

Document newList = parse(gson.toJson(myPoJo)); 
collections.insertOne(newList); 

此pojo具有日期属性。但解析方法不会坚持这种类型,并将其转换为我认为的字符串。所以在插入我的文档之后就像下面这样。

{ "auditInfo" : { 
     "updatedDate" : "Feb 28, 2000 3:39:20 PM", 
    } 
} 

问题在于我不能够在mongo查询中执行日期比较。

请告知如何处理此问题。

+0

你可以添加java代码吗? – Veeram

+0

添加了java代码 – Geek

+0

你在哪里看到那个输出?你使用任何查看器? – Veeram

回答

3

你可以尝试下面的东西。

使用蒙戈Java驱动程序:

MongoClient mongoClient = new MongoClient(); 
MongoDatabase db = mongoClient.getDatabase("test"); 
MongoCollection col = db.getCollection("input"); 

Input input = new Input(); 
input.setName("name"); 
input.setDate(new Date()); 

Document doc = new Document(); 
doc.append("name", input.getName()); 
doc.append("date", input.getDate()) 

col.insertOne(doc); 

使用吗啡

吗啡需要验证&映射蒙戈数据和从请求和响应的护理。

POJO的:

package org.mongodb.morphia; 
import org.bson.types.ObjectId; 
import org.mongodb.morphia.annotations.Entity; 
import org.mongodb.morphia.annotations.Id; 
import java.io.Serializable; 
import java.util.Date; 

@Entity("input") 
public class Input implements Serializable { 
    @Id 
    private ObjectId id; 

    private String name; 

    private Date date; 
} 

主要:

public class MorphiaClient { 
    public static void main(String[] args) { 
    final Morphia morphia = new Morphia(); 
    morphia.mapPackage("org.mongodb.morphia"); 
    final Datastore datastore = morphia.createDatastore(new MongoClient(), "test"); 
    Input input = new Input(); 
    input.setName("name"); 
    input.setDate(new Date()); 
    datastore.save(input); 
} 
0

java driver documentation概述的,驱动程序接受各种常用的Java类型,并且这些转换成相应的BSON类型内部。您必须传递这些支持类型的对象才能使其工作。

您的字段updatedDate的值必须是java.util.Date。之后,java驱动程序将能够将其转换为正确的类型,即org.bson.BsonDateTime

+0

我的Java对象具有类型为'java.util.Date'类型的'updatedDate'。但我相信我将它转换成json然后转换成Mongo文档。看起来这是造成这个问题 – Geek