我没有使用mongoose,而是使用Node.js的官方MongoDB驱动程序,因为它没有强制定义架构。
我在官方文档中读到,使用$ where子句,您可以使用JavaScript函数进行查询以提高灵活性,这对于一些相当复杂的查询需要,但它究竟是如何影响性能的呢?有没有人尝试过?我担心Mongolab沙箱上部署的100,000到200,000个文档会出现问题
真正的问题是,它实际上会成为网站响应时间的问题吗?
谢谢
答案 0 :(得分:1)
您是正确的,因为$where
是最后的查询运算符,只有在您的查询无法使用其他运算符表示时才应该使用。
来自the docs:
$where
评估JavaScript并且无法利用索引。因此,当您表达查询时,查询性能会提高 使用标准的MongoDB运算符(例如$gt
,$in
)。- 通常,只有当您无法使用其他运算符表达查询时,才应使用$ where。如果您必须使用
$where
,请尝试 包括至少一个其他标准查询运算符来过滤 结果集。仅使用$where
需要进行表扫描。
所以是的,$where
查询性能很可能在您的情况下不足。最好设计您的架构,以便在不需要$where
的情况下执行所需的查询。