我想知道是否有人可以帮助我使用日期作为参数在 MongoDB 中搜索集合。我在我的集合中存储了一个 java.sql.Date 对象,并且放置/查找没有问题。当我使用日期作为参数进行搜索时,就会出现问题。当我执行他的操作时,我得到一个空结果。
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();
有人知道我哪里出错了吗?
最佳答案
您可以尝试使用 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
关于java - 如何使用 Java 在 MongoDB 3.3 中按日期搜索文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130182/