Java中GridFS上按上载日期排序
默认情况下,GridFS存储文件名和上载日期。MongoDB Java驱动程序允许您通过字符串Id和DBObject查询进行查找。如何按文件名查找文件,按上载日期排序?我假设您使用的是MongoDB Java驱动程序中的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
类。正如您所提到的,它有两种方法,.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。