Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

开始使用 Django MongoDB扩展

在本教程中,您可以学习;了解如何在 Django项目中使用 Django MongoDB扩展包。

Django MongoDB扩展是一个开发者工具扩展 Django MongoDB后端的包。本教程向您展示如何在 MongoDB MongoDB扩展中配置MongoDB查询语言 (MQL ) 面板,以便与 Django 调试工具栏一起使用。此面板显示应用程序在请求期间运行的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 MongoDB扩展教程!您现在拥有一个 Django应用程序,它使用 Django MongoDB扩展来查看和分析Django 调试工具栏中的MongoDB查询。

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

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

后退

可查询加密

在此页面上