2017-02-28 13 views
0

私は、Mongoドライバの静的解析メソッドを使用してpojoをドキュメントオブジェクトに変換してドキュメントを挿入しています。Java to Mongoドキュメント日付

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

このpojoにはDate属性があります。しかし、構文解析メソッドは、この型を遵守しないと私は思う文字列に変換します。だから私の文書を挿入した後は、以下のようなものです。

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

この問題は、mongoクエリで日付比較を実行できないことがあります。

これをどう対処するかアドバイスしてください。

+0

javaコードを追加できますか? – Veeram

+0

javaコードを追加 – Geek

+0

出力はどこに表示されますか?ビューアを使用していますか? – Veeram

答えて

3

以下のように試すことができます。 MongoのJavaのドライバを使用する

:Morphia

Morphiaを使用して

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); 

は、リクエストとレスポンスにしてから&マッピングのmongoデータを検証の世話をします。

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; 
} 

メイン:java driver documentationに概説したように

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型の多様性を受け入れ、内部対応BSONタイプにこれらを変換します。このためにサポートされているタイプのオブジェクトを渡す必要があります。

フィールドupdatedDateの値はjava.util.Dateである必要があります。これで、Javaドライバは正しいタイプのorg.bson.BsonDateTimeに変換することができます。

+0

Javaオブジェクトに 'java.util.Date'型の' updatedDate'があります。しかし、私はそれをjsonに変換してからMongoの文書に変換していると思います。これが問題を引き起こしているように見える – Geek