Skip to content

DOCSP-46425: Specify a Query #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Jan 27, 2025
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions snooty.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,8 @@ intersphinx = [ "https://www.mongodb.com/docs/manual/objects.inv",

# toc_landing_pages = ["/paths/to/pages/that/have/nested/content"]

# [constants]
# constant = "value"
[constants]
django-odm = "Django MongoDB Backend"
django-version = "5.0"
api = "https://django-mongodb.readthedocs.io/en/latest/"
django-docs = "https://docs.djangoproject.com/en/{+django-version+}"
94 changes: 94 additions & 0 deletions source/includes/interact-data/specify-a-query.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# start-models
from django.db import models
from django_mongodb_backend.fields import EmbeddedModelField, ArrayField

class Award(models.Model):
wins = models.IntegerField(default=0)
nominations = models.IntegerField(default=0)
text = models.CharField(max_length=100)

class Meta:
managed = False

class Movie(models.Model):
title = models.CharField(max_length=200)
plot = models.TextField(blank=True)
runtime = models.IntegerField(default=0)
released = models.DateTimeField("release date", null=True, blank=True)
awards = EmbeddedModelField(Award)
genres = ArrayField(models.CharField(max_length=100), null=True, blank=True)
imdb = models.JSONField(null=True)

class Meta:
db_table = "movies"
managed = False

def __str__(self):
return self.title
# end-models

# start-all
Movie.objects.all()
# end-all

# start-filter
Movie.objects.filter(runtime=300)
# end-filter

# start-get
Movie.objects.get(title="Finding Nemo")
# end-get

# start-exclude
Movie.objects.exclude(released__lt=timezone.make_aware(datetime(1980, 1, 1)))
# end-exclude

# start-filter-contains
Movie.objects.filter(plot__contains="coming-of-age")
# end-filter-contains

# start-filter-lte
Movie.objects.filter(runtime__lte=50)
# end-filter-lte

# start-filter-relationships
Movie.objects.filter(awards__wins=93)
# end-filter-relationships

# start-filter-combine
Movie.objects.filter(awards__text__istartswith="nominated")
# end-filter-combine

# start-sort
Movie.objects.filter(title__startswith="Rocky").order_by("released")
# end-sort

# start-limit
Movie.objects.filter(released=timezone.make_aware(datetime(2010, 7, 16)))[2:4]
# end-limit

# start-first
Movie.objects.filter(genres=["Crime", "Comedy"]).first()
# end-first

# start-json
Movie.objects.filter(imdb__votes__gt=900000)
# end-json

# start-kt
from django.db.models.fields.json import KT

Movie.objects.annotate(score=KT("imdb__rating")).all().order_by("-score")
# end-kt

# start-primary-key-pk
from bson import ObjectId

Movie.objects.get(pk=ObjectId("573a1394f29313caabce0d37"))
# end-primary-key-pk

# start-primary-key-id
from bson import ObjectId

Movie.objects.get(id=ObjectId("573a1394f29313caabce0d37"))
# end-primary-key-id
10 changes: 7 additions & 3 deletions source/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@
Django MongoDB Backend
======================

.. default-domain:: mongodb
.. facet::
:name: programming_language
:values: python

Your words here. Don't forget to add a toctree!
.. meta::
:keywords: home

Have a lovely day!
.. toctree::

Interact with Data </interact-data>
17 changes: 17 additions & 0 deletions source/interact-data.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
.. _django-interact-data:

==================
Interact with Data
==================

.. facet::
:name: genre
:values: reference

.. meta::
:keywords: odm, crud, query

.. toctree::
:caption: Interact with Data

Specify a Query </interact-data/specify-a-query>
Loading