我想知道是否有人可以帮助我使用日期作为参数搜索MongoDB中的集合。我在我的集合中存储了一个java.sql.Date对象,并且put / finds没有问题。当我使用日期作为参数进行搜索时,会出现问题。当我这样做时,我得到一个空洞的结果。
Java代码:
// 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();
任何人都知道我哪里出错了?
答案 0 :(得分:0)
可以尝试使用java.util.date而不是java.sql.date。
这是我在当地尝试过的,它有效
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"));
}
}
输出:
1
Wed Aug 24 12:34:20 PDT 2016