Java中GridFS上按上载日期排序

Java中GridFS上按上载日期排序,java,mongodb,gridfs,Java,Mongodb,Gridfs,默认情况下,GridFS存储文件名和上载日期。MongoDB Java驱动程序允许您通过字符串Id和DBObject查询进行查找。如何按文件名查找文件,按上载日期排序?我假设您使用的是MongoDB Java驱动程序中的GridFS类。正如您所提到的,它有两种方法,.find(DBObject查询)和.find(String filename),这两种方法都返回一个列表 最好使用GridFS.find(字符串文件名)方法,并在客户端执行uploadDate排序(例如使用Collections.s

默认情况下,GridFS存储文件名和上载日期。MongoDB Java驱动程序允许您通过字符串Id和DBObject查询进行查找。如何按文件名查找文件,按上载日期排序?

我假设您使用的是MongoDB Java驱动程序中的
GridFS
类。正如您所提到的,它有两种方法,
.find(DBObject查询)
.find(String filename)
,这两种方法都返回一个
列表

最好使用
GridFS.find(字符串文件名)
方法,并在客户端执行
uploadDate
排序(例如使用
Collections.sort()
)。顺便说一句,您可以使用
ObjectID
而不是
uploadDate
。由于
ObjectID
包含创建时间作为最高有效位,因此返回的文件自然应按
uploadDate
升序排序。依赖
ObjectID
的唯一缺点是它只有秒精度,因此如果需要亚秒精度,您必须在
uploadDate
上进行排序


您可以在
db.fs.files DBCollection
.find()
,并在生成的
DBCursor
实例上应用
.sort()
方法,但在客户端进行排序应该足够便宜。一旦收到排序后的
DBCursor
,就可以查询各个文件的
GridFS
。不过,您最终不得不单独调用
GridFS.find(ObjectID)
,这可能会降低效率。

谢谢,我当前的实现使用Collections.sort()。缺少排序功能似乎是Java驱动程序的一个限制,而不是gridfs/mongodb。