我想使用pymongo过滤数据。但是我不知道这两种方法有何不同。结果表明,第一种方法的性能优于第二种方法。但是我已经在我的存储中过滤了一个查询集列表。这是mongodb功能吗?或pymongo功能?
以下是我的示例案例:
使用查找方法:(更快)
<div id="app" class="container">
<block>
<block>
<div class="row">
<header class="col-sm-12 header">
<h1 class="text-center text-uppercase header__title">formularz wprowadzania danych osobowych!</h1>
</header>
</div>
<block>
<form class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2" for="firstName">Imie: </label>
<div class="inputs col-sm-10">
<input class="form-control" type="text" id="firstName" name="firstName" value="">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="lastName">Nazwisko: </label>
<div class="col-sm-10">
<input class="form-control" type="text" id="lastName" name="lastName" value="">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" value="dalej">
</div>
</div>
</form>
</block>
</block>
使用查找方法和where表达式:(较慢)
result = pymongo.db.mycollection.find({
condition1,
condition2
})
在官方文档中,提到了是否可以使用标准运算符,而避免使用$ where表达式。Doc.
答案 0 :(得分:0)
您基本上已经自己给出了答案。第一个版本应该是您的首选,因为第二个版本使用$where
将导致执行时间变慢。原因之一是例如$where
将不使用任何索引(link)。
通过在服务器上启用以下日志记录,您可以在服务器日志中看到PHP驱动程序真正发送到MongoDB的查询:
此外,一旦您知道了精确的查询,就可以使用.explain()比较不同的执行计划。