带有Node.JS的MongoDB:$ where子句性能

时间:2015-04-11 17:28:40

标签: node.js mongodb

我没有使用mongoose,而是使用Node.js的官方MongoDB驱动程序,因为它没有强制定义架构。

我在官方文档中读到,使用$ where子句,您可以使用JavaScript函数进行查询以提高灵活性,这对于一些相当复杂的查询需要,但它究竟是如何影响性能的呢?有没有人尝试过?我担心Mongolab沙箱上部署的100,000到200,000个文档会出现问题

真正的问题是,它实际上会成为网站响应时间的问题吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您是正确的,因为$where是最后的查询运算符,只有在您的查询无法使用其他运算符表示时才应该使用。

来自the docs

  
      
  • $where评估JavaScript并且无法利用索引。因此,当您表达查询时,查询性能会提高   使用标准的MongoDB运算符(例如$gt$in)。
  •   
  • 通常,只有当您无法使用其他运算符表达查询时,才应使用$ where。如果您必须使用$where,请尝试   包括至少一个其他标准查询运算符来过滤   结果集。仅使用$where需要进行表扫描。
  •   

所以是的,$where查询性能很可能在您的情况下不足。最好设计您的架构,以便在不需要$where的情况下执行所需的查询。