在pymongo中使用explain(“ executionStats”)进行查询

Gui*_*l82 3 python mongodb pymongo-3.x

我的要求有问题,包括解释。举例来说,以下要求非常有效:

pp.pprint(col.find({"cuisine":"Italian"}, {"name" : 1, "address.zipcode" :   1, "address.coord" : 1}).explain())
Run Code Online (Sandbox Code Playgroud)

说明方法的项目清单印刷得很好。

但是,当我只需要带有以下请求的explain()方法中的executionStats项时:

pp.pprint(col.find({"cuisine":"Italian"}, {"name" : 1, "address.zipcode" : 1, "address.coord" : 1}).explain("executionStats"))
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

TypeError: explain() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)

有谁知道这是怎么回事,以及如何解决这个问题?

ty

Pyt*_*kie 5

col.find({"cuisine":"Italian"}, {"name" : 1, "address.zipcode" :   1, "address.coord" : 1}).explain()['executionStats']
Run Code Online (Sandbox Code Playgroud)

在pymongo中explain()是一个dic,所以你需要添加键来显示“ executionStats”

  • 如何对聚合做同样的事情? (2认同)

小智 2

您无法通过“executionStats”在 pymongo 中进行解释。您必须让 pymongo 的解释包装器获取所有解释输出并解析出您需要的内容。

pp.pprint(
  col.find(
    {"cuisine":"Italian"},
    {"name" : 1, "address.zipcode" : 1, "address.coord" : 1}
  ).explain()
)
Run Code Online (Sandbox Code Playgroud)

请参阅https://api.mongodb.org/python/current/api/pymongo/cursor.html?highlight=explain#pymongo.cursor.Cursor.explain

没有争论。