Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在MongoDB中查找具有非典型限制的文档_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 在MongoDB中查找具有非典型限制的文档

Node.js 在MongoDB中查找具有非典型限制的文档,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有个问题,但不知道如何解决。 我在MongoDB中有PointValues集合。 PointValue架构有3个参数: 数据点(参考dataPointschema) 值(编号) 时间(日期) 每小时有一个pointValue(每天24个) 我有API方法来获取指定的DataPoint和时间范围的点值。问题是我需要限制它最大1000点。典型的极限(1000)方法不是好方法,因为我需要整个指定时间范围的点,时间步长取决于指定的时间范围和点值计数 所以。。。例如: 1年的申请数据=1*365*2

我有个问题,但不知道如何解决。 我在MongoDB中有PointValues集合。 PointValue架构有3个参数:

  • 数据点(参考
    dataPoint
    schema)
  • 值(
    编号
  • 时间(
    日期
每小时有一个pointValue(每天24个)

我有API方法来获取指定的
DataPoint
和时间范围的点值。问题是我需要限制它最大1000点。典型的极限(1000)方法不是好方法,因为我需要整个指定时间范围的点,时间步长取决于指定的时间范围和点值计数

所以。。。例如:

1年的申请数据=1*365*24=8760 它应该返回1000个值,但大约每(24/(1000/365))9小时返回一个值

我不知道应该用什么方法过滤MongoDB中的数据

谢谢您的帮助。

在数据库中进行完全相同的采样将非常困难,而且性能可能不太好。但是给你一个类似结果的选项是使用一个聚合管道,这是最重要的。这样,您可以按时间步长对值进行采样,但步长的选择仅限于日期运算符的范围。因此,“每小时”样本很容易,但“每9小时”样本变得复杂。当这个查询是关键的和频繁的时,您可能需要考虑以每天、每小时、分钟等方式创建额外的集合:代码>数据表> /代码> S,因此您不必在每个请求上执行该聚合。p> 但是您的文档非常轻量级,因为实际负载位于不同的集合中。因此,您可以考虑将所有结果都在所请求的时间范围内,然后在应用层上跳过。您可能需要考虑将其与上述聚合相结合,以预先减少数据集。因此,您可以首先使用聚合管道将每小时的结果输入到应用程序中,然后以9个文档的步骤跳过结果集。这是否合理取决于您期望的文档数量

还要记住在
时间
-字段上创建一个排序索引