对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

在 Django 调试工具栏中查看 MongoDB 查询

在本教程中,您可以学习如何在 Django 项目中使用 Django MongoDB Extensions 中的 Django Debug Toolbar

Django MongoDB Extensions 是一个包,其中包含 Django MongoDB 后端的其他开发者工具。本教程展示如何配置 Django MongoDB Extensions 中的 MongoDB 查询语言 (MQL) 面板以供 Django Debug Toolbar 使用。此面板显示应用程序在请求期间运行的 MQL 查询,并显示执行时间和查询计划。

在开始本教程之前,请完成以下先决任务:

  • 创建一个使用 Django MongoDB后端的 Django项目。要创建项目,请参阅 Django MongoDB后端入门教程

  • 在项目中安装并配置 Django 调试工具栏。要查看说明,请参阅 安装 Django 调试工具栏文档中的。

以下步骤向您展示如何安装 Django MongoDB扩展、配置MQL面板以及在 Django 调试工具栏中查看MongoDB查询。

1

运行以下命令以安装 Django MongoDB扩展:

pip install django-mongodb-extensions
2

导航到项目的 settings.py文件并将 "django_mongodb_extensions" 添加到 INSTALLED_APPS 设置中,如以下示例所示:

INSTALLED_APPS = [
'django_mongodb_extensions',
# ... your other apps
]
3

默认下,Django 调试工具栏无需 DEBUG_TOOLBAR_PANELS 设置即可运行。但是,由于MongoDB不使用SQL,因此MongoDB应用程序最常见的配置是将SQL面板替换为MQL面板。将以下设置添加到 settings.py文件,将 DEBUG_TOOLBAR_PANELS 设置为默认值,但将 SQLPanel 替换为 MQLPanel

DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.history.HistoryPanel',
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'django_mongodb_extensions.mql_panel.MQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.alerts.AlertsPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.community.CommunityPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
'debug_toolbar.panels.profiling.ProfilingPanel',
]

提示

可选设置

要学习;了解如何设立用于自定义MQL面板行为的**可选**设置,请参阅 GitHub 上的 Django **MongoDB**扩展**存储库**中的自述文件

4

通过运行以下命令来启动开发服务器:

python manage.py runserver

导航到应用程序中查询MongoDB 的任何页面。打开 Django 调试工具栏并选择 MQL 面板,查看请求期间执行的MongoDB查询,包括其执行时间和解释计划。

5

如果您为在 Django MongoDB后端入门 教程中创建的应用程序配置 Django MongoDB扩展,则可以导航到 http://127.0.0.1:8000/recent_movies/ 以查看在请求期间执行的MongoDB查询。

Django 调试工具栏显示在页面右侧。选择 MQL 标签以查看用于显示最近电影的MongoDB查询,该查询类似于以下代码:

db.movies.aggregate([{'$addFields': {'released': '$released'}}, {'$sort': SON([('released', -1)])}, {'$limit': 5}])

然后,您可以通过单击以下按钮来浏览查询信息:

  1. 选择查询左侧的 + 按钮以查看回溯,它类似于以下代码:

    /path/to/site-packages/django/contrib/staticfiles/handlers.py in __call__(80)
    return self.application(environ, start_response)
    /path/to/djangoquickstart/sample_mflix/views.py in recent_movies(11)
    return render(request, "recent_movies.html", {"movies": movies})
    /path/to/site-packages/django/shortcuts.py in render(25)
    content = loader.render_to_string(template_name, context, request, using=using)
    ...
  2. ACTION 列中选择查询右侧的 Query 按钮,查看美观打印的MQL。此MQL类似于以下代码:

    db.movies.aggregate(
    [
    {
    "$addFields": {
    "released": "$released"
    }
    },
    {
    "$sort": {
    "released": -1
    }
    },
    {
    "$limit": 5
    }
    ]
    )
  3. ACTION 列中选择查询右侧的 Explain 按钮,查看查询的解释计划。该计划类似于以下代码:

    {
    "explainVersion": "1",
    "stages": [
    {
    "$cursor": {
    "queryPlanner": {
    ...
    },
    "executionStats": {
    ...
    }
    },
    "nReturned": 21351,
    "executionTimeMillisEstimate": 59
    },
    {
    "$addFields": {
    "released": "$released"
    },
    "nReturned": 21351,
    "executionTimeMillisEstimate": 70
    },
    {
    "$sort": {
    "sortKey": {
    "released": -1
    },
    "limit": 5
    },
    ...
    }
    ],
    ...
    }

恭喜完成 Django Debug Toolbar 教程!您现在拥有一个 Django 应用程序,可使用 Django MongoDB Extensions 在 Django Debug Toolbar 中查看和分析 MongoDB 查询。

要了解有关 Django MongoDB Extensions 包的更多信息,请参阅 PyPI 上的 django-mongodb-extensions 和 GitHub 上的 django-mongodb-extensions 存储库。

如需学习;了解如何查询数据,请参阅“指定查询”指南。