我正在努力处理mongo查询。我需要在单个查询中查找文档集合。集合应包含每个用户在单个查询中使用的最新日期(字段创建日期)的文档。
在斯波克有一个测试案例来演示我想要实现的目标:
def 'should filter the newest location for every user'() {
given:
List locationsInDb = [
buildLocation(USERNAME_1, '2017-02-03T10:37:30.00Z'),
buildLocation(USERNAME_1, '2017-03-04T10:37:30.00Z'),
buildLocation(USERNAME_2, '2017-02-05T10:37:30.00Z'),
buildLocation(USERNAME_2, '2017-03-06T10:37:30.00Z')
]
insertToMongo(locationsInDb)
when:
List filteredLocations = locationRepository.findLastForEveryUser()
then:
filteredLocations == [locationsInDb.get(1), locationsInDb.get(3)]
}
我发现不同的方法是<代码>2.1.0的一部分。M1版本,因此尚未提供。
我也在尝试@Query
注释,但留档(下面的链接)没有指定如何创建像我这样的查询。
https://docs.spring.io/spring-data/data-document/docs/current/reference/html/#d0e3309
谢谢你的帮助。
无法通过Spring数据中的派生查询或使用MongoDB本机查询操作符来表示您正在查找的查询。Distinct也不能完成这项工作,因为它只是将单个字段的不同值提取到一个数组中。
请考虑使用聚合。Spring Data的详细信息可以在参考留档中找到。
问题内容: 我有一个类似于 我想获取每个“ deviceId”的最新“数据”(使用message.ts作为时间戳)。 到目前为止,我已经设法使用查询按时间戳记的顺序取回了数据, 但是我不知道如何删除重复的设备记录。 这可以在CosmosDB SQL引擎内完成吗? 问题答案: 感谢Mark Brown的评论,我发现以下内容似乎是此问题的正确解决方案。不仅仅只是一次性使用一些SQL那样优雅,但这确实是
问题内容: 这个问题已经在这里有了答案 : SQL只选择列上具有最大值的行[重复] (27个答案) 去年关闭。 假设我有一个带有列的表: 我只想从每个用户那里获取最新消息,就像您在深入实际线程之前在FaceBook收件箱中看到的那样。 此查询似乎使我接近所需的结果: 但是查询给我的是来自每个用户的最旧消息,而不是最新消息。 我不知道这一点。 问题答案: 您应该找出每个组(子查询)中的最后一个值,然
问题内容: 不幸的是,SQL并不是很容易找到我。我有两个表,一个表和一个表。 贷款支付表: ID(主键),LoanID(与贷款表上的ID匹配),PaymentDate,Amount等。 我需要一条sql语句,该语句可以给我每个月输入的最后一笔付款(如果有的话)。我目前的说法没有给我结果。还存在一个问题,有时在该月的最大日期有时会有平局,因此我也必须能够处理该问题(我的想法是在平局的情况下选择最大的
问题内容: 在日志中,我得到: “来自LAHETYS”发生了什么事?使用HQL或/和SQL处理此问题的最佳实践是什么? 另一个问题: 我得到一个例外: 所以我不能将对象投射到我的Lahetys对象上,很奇怪吗? 谢谢!佐美 问题答案: 您的HQL查询无效。LIMIT不是有效的HQL子句。要在Hibernate中做到这一点,只需
我有一个包含4列的Athena表,我想查找: null
问题内容: 我有此数据: 代码(对于SQL Server 2005): 我想为每个名称获取具有最新DATE的ID。像这样: 实现此目的最优雅的方法是什么? 问题答案: 尽量避免使用保留字(和模糊的列名),例如…