为了账号安全,请及时绑定邮箱和手机立即绑定

MongoDB Java使用多个过滤器并获得最后一个

MongoDB Java使用多个过滤器并获得最后一个

UYOU 2019-04-17 14:15:25
在我的收藏中,文档如下所示:我通过这样做设法获得最后插入的文档:collection.find().sort(new Document("date",-1)).first().getDate()但是现在我需要获得最后一个日期并且具有特定值functionalityName。我被卡住了,因为我不知道如何修改它以考虑两个过滤器。我怎么做?我看过Mongo中的多个过滤器,但由于我不是在寻找特定的日期,而是为了更大的日期(最后一个),我不知道如何与其他过滤器一起指定。
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

听起来你想要一个过滤器和一个排序,查询将如下所示:

collection.find(Filters.eq("functionalityName", "specificValue"))
          .sort(new Document("date",-1))
          .first()
          .getDate()

因此,sort零件保持原样,但在find添加过滤器的部分中。

您还需要导入Filters类:

import com.mongodb.client.model.Filters.*;

或者,您可以Filters为了简洁而静态导入类,这是官方过滤器文档的示例的完成方式,如果您需要添加其他过滤器,可能需要查看这些示例

import static com.mongodb.client.model.Filters.*;// ...collection.find(eq("functionalityName", "specificValue"))
      .sort(new Document("date",-1))
      .first()
      .getDate()


查看完整回答
反对 回复 2019-05-17
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

的级联findsort等等肯定的作品,只有find()其实是在数据库端执行,它将返回的结果,然后进行排序将您的应用程序就可以使用。

如果要创建执行所有这些操作数据库端的查询,则需要管道。要做到这一点,你可以使用java驱动程序的聚合框架,让你做这样的事情

collection.aggregate(
      Arrays.asList(
              match(eq("functionalityName", "specificValue")),
              sort(descending("date")),
              project(fields(include("date")))
      ))

在文档中,您可以找到可以应用于管道的所有阶段。


查看完整回答
反对 回复 2019-05-17
  • 2 回答
  • 0 关注
  • 1068 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信