如何使用Java在MongoDB 3.3中按日期搜索文档

时间:2016-08-24 18:04:47

标签: java mongodb nosql

我想知道是否有人可以帮助我使用日期作为参数搜索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();

任何人都知道我哪里出错了?

1 个答案:

答案 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