Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
Socket.io 过滤搜索最有效的方法是什么?_Socket.io_Performance_Mongodb - Fatal编程技术网

Socket.io 过滤搜索最有效的方法是什么?

Socket.io 过滤搜索最有效的方法是什么?,socket.io,performance,mongodb,Socket.io,Performance,Mongodb,我正在使用node.js和mongodb 我将有一个数据库设置和使用有实时更新,将有数据库查询以及再次或推新的更新到客户端 我正在试图找出过滤数据库的最佳方法是什么 有关查询内容和实时更新内容的更多信息: 数据库中的文档将包括地址、城市、时间、包裹数量、名称、价格等信息 过滤器包括城市/价格/名称/时间(意味着仅查看同一城市内或同一时间段内的地址) 实时信息:包括向数据库中添加一个新文档,该文档将通过添加新地址的通知更新网站管理员 方法1:使用正在搜索的筛选器查询数据库 方法2:查询数据库中的所

我正在使用
node.js
mongodb

我将有一个数据库设置和使用有实时更新,将有数据库查询以及再次或推新的更新到客户端

我正在试图找出过滤数据库的最佳方法是什么

有关查询内容和实时更新内容的更多信息:

数据库中的文档将包括地址、城市、时间、包裹数量、名称、价格等信息

过滤器包括城市/价格/名称/时间(意味着仅查看同一城市内或同一时间段内的地址)

实时信息:包括向数据库中添加一个新文档,该文档将通过添加新地址的通知更新网站管理员

方法1:使用正在搜索的筛选器查询数据库

方法2:查询数据库中的所有搜索,然后在客户端对其进行过滤(Javascript)

方法3:查询数据库中的所有搜索,然后将其存储在localStorage中,然后查询localStorage中的过滤器是什么

试图找出用户过滤它的最快方式是什么?
此外,如果它不同于最具成本效益的方式,那么也是最具成本效益的方式(我假设是较少的db查询).

很难说,因为我们看不到过滤器的确切条件,但一般来说:

  • Mongo在查询条件中只能使用1个索引。因此,该索引覆盖的任何字段都可以用于有效的筛选。否则,它可能会执行很慢的全表扫描。如果您使用的是索引,那么您可能正在执行最有效的查询。(Mongo仍然可以使用另一个索引进行排序)
  • 有时,您将被迫在客户端进行处理,因为Mongo无法完成您想要的操作,或者需要太多的查询
  • 效率最低的选择是仅仅因为IO速度慢而将结果存储在某个地方。只有将它们用作缓存而不重新计算时,这才对您有利
  • 还考虑网络开销和延迟。如果必须将大量数据发送回客户端,则速度会变慢。总的来说,Mongo在过滤东西方面比你在客户端做得更好

根据你的说法,如果你能在一段时间内按地址过滤,那么你就可以有一个索引来减少大量的文档。您很可能需要一个复合索引-多个字段。

什么最适合您的用户和应用程序的性能?现在还不清楚搜索顶部的过滤器是什么(因为它们似乎与我类似)。如果用户启动broad,则返回所有结果,然后在本地应用筛选器。。。更新信息以包含更多详细信息创建解释,是的,我想我只需要查询mongodb一次,然后将结果保存在一个数组中,并使用过滤结果创建一个新数组,显示该数组,并用需要过滤的内容替换该数组