node.js - 如何对 Mongo 上的特定记录集进行排序的不同查询?
问题描述
从包含股票信息的中等大小的集合(约 1m 行)中,我想查询特定的公司/股票,然后对于该公司,返回按日期区分的最高回报。
这是数据的表示形式(为简洁起见,省略了字段:
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-18T04:00:00.000+0000",
"flatreturn" : 0.82,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-18T04:00:00.000+0000",
"flatreturn" : 0.92,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-18T04:00:00.000+0000",
"flatreturn" : 0.52,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-18T04:00:00.000+0000",
"flatreturn" : 1.82,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-22T04:00:00.000+0000",
"flatreturn" : 0.43,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-22T04:00:00.000+0000",
"flatreturn" : 6.92,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-22T04:00:00.000+0000",
"flatreturn" : 0.12,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-22T04:00:00.000+0000",
"flatreturn" : 0.01,
}
显然,数据集更大,不仅仅是 AAPL,而是出于说明目的,仅显示数据的子集。
我能够找到一个特定的股票,按到期和固定回报排序。但是,这显然不会给我不同的值,因为我只想要每个过期组的一条记录。
db.getCollection("stocks").find(
{
"Symbol" : "AAPL"
}
).sort(
{
"Expiration" : 1.0,
"flatreturn" : -1.0
}
);
我想要的输出是针对特定股票,找到每组日期中的最高回报。因此,对于上述数据集,所需的返回数据将是:
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-18T04:00:00.000+0000",
"flatreturn" : 1.82,
}
{
"Symbol" : "AAPL",
"Expiration" : "2019-10-22T04:00:00.000+0000",
"flatreturn" : 6.92,
}
在所需的回报数据集中,我在 2019-10-18 组中获得了最高回报,在 2019-10-22 组中也是如此。
感谢有关构建查询的任何指导。通过更多信息,如果这在 Mongo 中是不可能的,我想这个论点可以在 JS(节点)中进行,但鉴于我的特定股票数据集将返回大约 1000 条记录,我不确定在 JS 中执行不同查询的效率(或者,实际上,如何在 JS 中执行此操作)。
解决方案
推荐阅读
- python - 如何解决 remove_widget 在 Kivy 的另一个布局中要删除的小部件
- reactjs - 重定向到用户在登录前尝试访问的同一页面 - Reactjs
- mysql - Google API 对 Google Cloud 上的 MySQL 代理的身份验证范围不足
- php - 在zend框架中从ajax获取数据时如何避免页眉和页脚html代码?
- amazon-web-services - Fargate 是无服务器容器意味着如果没有流量,我可以让 0 个容器工作?
- ruby-on-rails - Rails:如何使用左连接表急切加载?
- azure-active-directory - 将 Azure Data Lake Storage 用户权限与 Apache Ranger 和 Active Directory 同步
- android - 在 Jetbrain IDE 中,如何在方法参数悬停时显示警告?
- c++ - 在neovim上使用coc.vim的cquery中出现奇怪的错误
- javascript - “文件”类型的参数不能分配给“字符串”类型的参数