2017-02-28 109 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