2016-08-24 4 views
1

Ich frage mich, ob jemand mir helfen kann, eine Sammlung in MongoDB mit Datum als Parameter zu suchen. Ich habe ein java.sql.Date-Objekt in meiner Sammlung gespeichert und es gibt keine Probleme mit Puts/Finds. Das Problem tritt auf, wenn ich mit Datum als Parameter suche. Wenn ich das mache, bekomme ich ein leeres Ergebnis.So durchsuchen Sie Dokument in MongoDB 3.3 mit Java

Java-Code:

// Boiler plate 
MongoClient client = new MongoClient("localhost" , 27017); 
MongoDatabase db = client.getDatabase("my-database"); 
MongoCollection<Document> collection = db.getCollection("my-collection") 

// This returns nothing 
java.sql.Date date = someFunctionToSetDate(); 
MongoCursor<Document> cursor = collection.find(new Document("date",date)).iterator(); 

jemand eine Idee, wo ich falsch gehe?

Antwort

0

können Sie mit java.util.date statt java.sql.date versuchen.

das ist, was ich in meinem lokalen ausprobiert und es funktioniert

package com.mongo.examples; 

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

import org.bson.BsonDocument; 
import org.bson.Document; 
import org.bson.conversions.Bson; 

import com.mongodb.MongoClient; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoCursor; 
import com.mongodb.client.MongoDatabase; 

public class MongoDateTest { 

    public static void main(String args[]){ 

     MongoClient mongoClient = new MongoClient("localhost",27017); 
     MongoDatabase database = mongoClient.getDatabase("testdates"); 

     MongoCollection<Document> collection = database.getCollection("dts"); 
     collection.drop(); 
     List<Document> insertList = new ArrayList<Document>(); 
     Date date = new Date(); 
     Document document = new Document(). 
       append("_id", 20).append("date",date); 
     insertList.add(document); 
     collection.insertMany(insertList); 
     System.out.println(collection.count()); 
     MongoCursor<Document> doc = collection.find(new Document("date", date)).iterator(); 
     System.out.println(doc.next().getDate("date")); 
    } 
} 

Ausgang:

1 
Wed Aug 24 12:34:20 PDT 2016 
+0

@ T-Pane diese Hilfe nicht wahr? – user641887

+0

nein funktioniert immer noch nicht. Also konvertiere ich von java.sql.Date zu java.util.Date, wenn ich eine Einfügung mache und umgekehrt, wenn ich es finde. Wissen Sie, in welchem ​​Format mongoDB Daten speichert? –

+0

Haben Sie mein Beispielbeispiel gesehen? – user641887

Verwandte Themen