Doc fixes, thanks @3Inc
Author: Slam <3lnc.slam@gmail.com> Date: Fri Nov 28 13:10:38 2014 +0200
This commit is contained in:
parent
2b3bb81fae
commit
51f314e907
@ -23,21 +23,32 @@ arguments should be provided::
|
|||||||
|
|
||||||
connect('project1', username='webapp', password='pwd123')
|
connect('project1', username='webapp', password='pwd123')
|
||||||
|
|
||||||
URI style connections are also supported - just supply the uri as
|
URI style connections are also supported -- just supply the URI as
|
||||||
the :attr:`host` to
|
the :attr:`host` to
|
||||||
:func:`~mongoengine.connect`::
|
:func:`~mongoengine.connect`::
|
||||||
|
|
||||||
connect('project1', host='mongodb://localhost/database_name')
|
connect('project1', host='mongodb://localhost/database_name')
|
||||||
|
|
||||||
Note that database name from uri has priority over name
|
.. note:: Database, username and password from URI string overrides
|
||||||
in :func:`~mongoengine.connect`
|
corresponding parameters in :func:`~mongoengine.connect`: ::
|
||||||
|
|
||||||
|
connect(
|
||||||
|
name='test',
|
||||||
|
username='user',
|
||||||
|
password='12345',
|
||||||
|
host='mongodb://admin:qwerty@localhost/production'
|
||||||
|
)
|
||||||
|
|
||||||
|
will establish connection to ``production`` database using
|
||||||
|
``admin`` username and ``qwerty`` password.
|
||||||
|
|
||||||
ReplicaSets
|
ReplicaSets
|
||||||
===========
|
===========
|
||||||
|
|
||||||
MongoEngine supports :class:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient`.
|
MongoEngine supports
|
||||||
To use them, please use a URI style connection and provide the `replicaSet` name in the
|
:class:`~pymongo.mongo_replica_set_client.MongoReplicaSetClient`. To use them,
|
||||||
connection kwargs.
|
please use an URI style connection and provide the ``replicaSet`` name
|
||||||
|
in the connection kwargs.
|
||||||
|
|
||||||
Read preferences are supported through the connection or via individual
|
Read preferences are supported through the connection or via individual
|
||||||
queries by passing the read_preference ::
|
queries by passing the read_preference ::
|
||||||
@ -77,36 +88,38 @@ to point across databases and collections. Below is an example schema, using
|
|||||||
meta = {"db_alias": "users-books-db"}
|
meta = {"db_alias": "users-books-db"}
|
||||||
|
|
||||||
|
|
||||||
Switch Database Context Manager
|
Context Managers
|
||||||
===============================
|
================
|
||||||
|
Sometimes you may want to switch the database or collection to query against
|
||||||
Sometimes you may want to switch the database to query against for a class
|
for a class.
|
||||||
for example, archiving older data into a separate database for performance
|
For example, archiving older data into a separate database for performance
|
||||||
reasons.
|
reasons or writing functions that dynamically choose collections to write
|
||||||
|
document to.
|
||||||
|
|
||||||
|
Switch Database
|
||||||
|
---------------
|
||||||
The :class:`~mongoengine.context_managers.switch_db` context manager allows
|
The :class:`~mongoengine.context_managers.switch_db` context manager allows
|
||||||
you to change the database alias for a given class allowing quick and easy
|
you to change the database alias for a given class allowing quick and easy
|
||||||
access to the same User document across databases::
|
access the same User document across databases::
|
||||||
|
|
||||||
from mongoengine.context_managers import switch_db
|
from mongoengine.context_managers import switch_db
|
||||||
|
|
||||||
class User(Document):
|
class User(Document):
|
||||||
name = StringField()
|
name = StringField()
|
||||||
|
|
||||||
meta = {"db_alias": "user-db"}
|
meta = {"db_alias": "user-db"}
|
||||||
|
|
||||||
with switch_db(User, 'archive-user-db') as User:
|
with switch_db(User, 'archive-user-db') as User:
|
||||||
User(name="Ross").save() # Saves the 'archive-user-db'
|
User(name="Ross").save() # Saves the 'archive-user-db'
|
||||||
|
|
||||||
.. note:: Make sure any aliases have been registered with
|
|
||||||
:func:`~mongoengine.register_connection` before using the context manager.
|
|
||||||
|
|
||||||
There is also a switch collection context manager as well. The
|
Switch Collection
|
||||||
:class:`~mongoengine.context_managers.switch_collection` context manager allows
|
-----------------
|
||||||
you to change the collection for a given class allowing quick and easy
|
The :class:`~mongoengine.context_managers.switch_collection` context manager
|
||||||
access to the same Group document across collection::
|
allows you to change the collection for a given class allowing quick and easy
|
||||||
|
access the same Group document across collection::
|
||||||
|
|
||||||
from mongoengine.context_managers import switch_db
|
from mongoengine.context_managers import switch_collection
|
||||||
|
|
||||||
class Group(Document):
|
class Group(Document):
|
||||||
name = StringField()
|
name = StringField()
|
||||||
@ -116,3 +129,8 @@ access to the same Group document across collection::
|
|||||||
with switch_collection(Group, 'group2000') as Group:
|
with switch_collection(Group, 'group2000') as Group:
|
||||||
Group(name="hello Group 2000 collection!").save() # Saves in group2000 collection
|
Group(name="hello Group 2000 collection!").save() # Saves in group2000 collection
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. note:: Make sure any aliases have been registered with
|
||||||
|
:func:`~mongoengine.register_connection` or :func:`~mongoengine.connect`
|
||||||
|
before using the context manager.
|
||||||
|
@ -4,7 +4,7 @@ Defining documents
|
|||||||
In MongoDB, a **document** is roughly equivalent to a **row** in an RDBMS. When
|
In MongoDB, a **document** is roughly equivalent to a **row** in an RDBMS. When
|
||||||
working with relational databases, rows are stored in **tables**, which have a
|
working with relational databases, rows are stored in **tables**, which have a
|
||||||
strict **schema** that the rows follow. MongoDB stores documents in
|
strict **schema** that the rows follow. MongoDB stores documents in
|
||||||
**collections** rather than tables - the principal difference is that no schema
|
**collections** rather than tables --- the principal difference is that no schema
|
||||||
is enforced at a database level.
|
is enforced at a database level.
|
||||||
|
|
||||||
Defining a document's schema
|
Defining a document's schema
|
||||||
@ -171,15 +171,15 @@ arguments can be set on all fields:
|
|||||||
size = StringField(max_length=3, choices=SIZE)
|
size = StringField(max_length=3, choices=SIZE)
|
||||||
|
|
||||||
:attr:`help_text` (Default: None)
|
:attr:`help_text` (Default: None)
|
||||||
Optional help text to output with the field - used by form libraries
|
Optional help text to output with the field -- used by form libraries
|
||||||
|
|
||||||
:attr:`verbose_name` (Default: None)
|
:attr:`verbose_name` (Default: None)
|
||||||
Optional human-readable name for the field - used by form libraries
|
Optional human-readable name for the field -- used by form libraries
|
||||||
|
|
||||||
|
|
||||||
List fields
|
List fields
|
||||||
-----------
|
-----------
|
||||||
MongoDB allows the storage of lists of items. To add a list of items to a
|
MongoDB allows storing lists of items. To add a list of items to a
|
||||||
:class:`~mongoengine.Document`, use the :class:`~mongoengine.fields.ListField` field
|
:class:`~mongoengine.Document`, use the :class:`~mongoengine.fields.ListField` field
|
||||||
type. :class:`~mongoengine.fields.ListField` takes another field object as its first
|
type. :class:`~mongoengine.fields.ListField` takes another field object as its first
|
||||||
argument, which specifies which type elements may be stored within the list::
|
argument, which specifies which type elements may be stored within the list::
|
||||||
@ -471,8 +471,16 @@ Text indexes may be specified by prefixing the field name with a **$**. ::
|
|||||||
class Page(Document):
|
class Page(Document):
|
||||||
title = StringField()
|
title = StringField()
|
||||||
rating = StringField()
|
rating = StringField()
|
||||||
|
created = DateTimeField()
|
||||||
meta = {
|
meta = {
|
||||||
'indexes': ['title', ('title', '-rating')]
|
'indexes': [
|
||||||
|
'title',
|
||||||
|
('title', '-rating'),
|
||||||
|
{
|
||||||
|
'fields': ['created'],
|
||||||
|
'expireAfterSeconds': 3600
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
If a dictionary is passed then the following options are available:
|
If a dictionary is passed then the following options are available:
|
||||||
@ -690,7 +698,7 @@ defined, you may subclass it and add any extra fields or methods you may need.
|
|||||||
As this is new class is not a direct subclass of
|
As this is new class is not a direct subclass of
|
||||||
:class:`~mongoengine.Document`, it will not be stored in its own collection; it
|
:class:`~mongoengine.Document`, it will not be stored in its own collection; it
|
||||||
will use the same collection as its superclass uses. This allows for more
|
will use the same collection as its superclass uses. This allows for more
|
||||||
convenient and efficient retrieval of related documents - all you need do is
|
convenient and efficient retrieval of related documents -- all you need do is
|
||||||
set :attr:`allow_inheritance` to True in the :attr:`meta` data for a
|
set :attr:`allow_inheritance` to True in the :attr:`meta` data for a
|
||||||
document.::
|
document.::
|
||||||
|
|
||||||
@ -709,7 +717,7 @@ document.::
|
|||||||
|
|
||||||
Working with existing data
|
Working with existing data
|
||||||
--------------------------
|
--------------------------
|
||||||
As MongoEngine no longer defaults to needing :attr:`_cls` you can quickly and
|
As MongoEngine no longer defaults to needing :attr:`_cls`, you can quickly and
|
||||||
easily get working with existing data. Just define the document to match
|
easily get working with existing data. Just define the document to match
|
||||||
the expected schema in your database ::
|
the expected schema in your database ::
|
||||||
|
|
||||||
@ -732,7 +740,7 @@ Abstract classes
|
|||||||
|
|
||||||
If you want to add some extra functionality to a group of Document classes but
|
If you want to add some extra functionality to a group of Document classes but
|
||||||
you don't need or want the overhead of inheritance you can use the
|
you don't need or want the overhead of inheritance you can use the
|
||||||
:attr:`abstract` attribute of :attr:`-mongoengine.Document.meta`.
|
:attr:`abstract` attribute of :attr:`~mongoengine.Document.meta`.
|
||||||
This won't turn on :ref:`document-inheritance` but will allow you to keep your
|
This won't turn on :ref:`document-inheritance` but will allow you to keep your
|
||||||
code DRY::
|
code DRY::
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
Documents instances
|
Documents instances
|
||||||
===================
|
===================
|
||||||
To create a new document object, create an instance of the relevant document
|
To create a new document object, create an instance of the relevant document
|
||||||
class, providing values for its fields as its constructor keyword arguments.
|
class, providing values for its fields as constructor keyword arguments.
|
||||||
You may provide values for any of the fields on the document::
|
You may provide values for any of the fields on the document::
|
||||||
|
|
||||||
>>> page = Page(title="Test Page")
|
>>> page = Page(title="Test Page")
|
||||||
@ -32,11 +32,11 @@ already exist, then any changes will be updated atomically. For example::
|
|||||||
|
|
||||||
Changes to documents are tracked and on the whole perform ``set`` operations.
|
Changes to documents are tracked and on the whole perform ``set`` operations.
|
||||||
|
|
||||||
* ``list_field.push(0)`` - *sets* the resulting list
|
* ``list_field.push(0)`` --- *sets* the resulting list
|
||||||
* ``del(list_field)`` - *unsets* whole list
|
* ``del(list_field)`` --- *unsets* whole list
|
||||||
|
|
||||||
With lists its preferable to use ``Doc.update(push__list_field=0)`` as
|
With lists its preferable to use ``Doc.update(push__list_field=0)`` as
|
||||||
this stops the whole list being updated - stopping any race conditions.
|
this stops the whole list being updated --- stopping any race conditions.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
:ref:`guide-atomic-updates`
|
:ref:`guide-atomic-updates`
|
||||||
@ -74,7 +74,7 @@ Cascading Saves
|
|||||||
If your document contains :class:`~mongoengine.fields.ReferenceField` or
|
If your document contains :class:`~mongoengine.fields.ReferenceField` or
|
||||||
:class:`~mongoengine.fields.GenericReferenceField` objects, then by default the
|
:class:`~mongoengine.fields.GenericReferenceField` objects, then by default the
|
||||||
:meth:`~mongoengine.Document.save` method will not save any changes to
|
:meth:`~mongoengine.Document.save` method will not save any changes to
|
||||||
those objects. If you want all references to also be saved also, noting each
|
those objects. If you want all references to be saved also, noting each
|
||||||
save is a separate query, then passing :attr:`cascade` as True
|
save is a separate query, then passing :attr:`cascade` as True
|
||||||
to the save method will cascade any saves.
|
to the save method will cascade any saves.
|
||||||
|
|
||||||
@ -113,12 +113,13 @@ you may still use :attr:`id` to access the primary key if you want::
|
|||||||
>>> bob.id == bob.email == 'bob@example.com'
|
>>> bob.id == bob.email == 'bob@example.com'
|
||||||
True
|
True
|
||||||
|
|
||||||
You can also access the document's "primary key" using the :attr:`pk` field; in
|
You can also access the document's "primary key" using the :attr:`pk` field,
|
||||||
is an alias to :attr:`id`::
|
it's an alias to :attr:`id`::
|
||||||
|
|
||||||
>>> page = Page(title="Another Test Page")
|
>>> page = Page(title="Another Test Page")
|
||||||
>>> page.save()
|
>>> page.save()
|
||||||
>>> page.id == page.pk
|
>>> page.id == page.pk
|
||||||
|
True
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ syntax::
|
|||||||
|
|
||||||
Query operators
|
Query operators
|
||||||
===============
|
===============
|
||||||
Operators other than equality may also be used in queries; just attach the
|
Operators other than equality may also be used in queries --- just attach the
|
||||||
operator name to a key with a double-underscore::
|
operator name to a key with a double-underscore::
|
||||||
|
|
||||||
# Only find users whose age is 18 or less
|
# Only find users whose age is 18 or less
|
||||||
@ -84,19 +84,20 @@ expressions:
|
|||||||
Geo queries
|
Geo queries
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
There are a few special operators for performing geographical queries. The following
|
There are a few special operators for performing geographical queries.
|
||||||
were added in 0.8 for: :class:`~mongoengine.fields.PointField`,
|
The following were added in MongoEngine 0.8 for
|
||||||
|
:class:`~mongoengine.fields.PointField`,
|
||||||
:class:`~mongoengine.fields.LineStringField` and
|
:class:`~mongoengine.fields.LineStringField` and
|
||||||
:class:`~mongoengine.fields.PolygonField`:
|
:class:`~mongoengine.fields.PolygonField`:
|
||||||
|
|
||||||
* ``geo_within`` -- Check if a geometry is within a polygon. For ease of use
|
* ``geo_within`` -- check if a geometry is within a polygon. For ease of use
|
||||||
it accepts either a geojson geometry or just the polygon coordinates eg::
|
it accepts either a geojson geometry or just the polygon coordinates eg::
|
||||||
|
|
||||||
loc.objects(point__geo_within=[[[40, 5], [40, 6], [41, 6], [40, 5]]])
|
loc.objects(point__geo_within=[[[40, 5], [40, 6], [41, 6], [40, 5]]])
|
||||||
loc.objects(point__geo_within={"type": "Polygon",
|
loc.objects(point__geo_within={"type": "Polygon",
|
||||||
"coordinates": [[[40, 5], [40, 6], [41, 6], [40, 5]]]})
|
"coordinates": [[[40, 5], [40, 6], [41, 6], [40, 5]]]})
|
||||||
|
|
||||||
* ``geo_within_box`` - simplified geo_within searching with a box eg::
|
* ``geo_within_box`` -- simplified geo_within searching with a box eg::
|
||||||
|
|
||||||
loc.objects(point__geo_within_box=[(-125.0, 35.0), (-100.0, 40.0)])
|
loc.objects(point__geo_within_box=[(-125.0, 35.0), (-100.0, 40.0)])
|
||||||
loc.objects(point__geo_within_box=[<bottom left coordinates>, <upper right coordinates>])
|
loc.objects(point__geo_within_box=[<bottom left coordinates>, <upper right coordinates>])
|
||||||
@ -132,23 +133,21 @@ were added in 0.8 for: :class:`~mongoengine.fields.PointField`,
|
|||||||
loc.objects(poly__geo_intersects={"type": "Polygon",
|
loc.objects(poly__geo_intersects={"type": "Polygon",
|
||||||
"coordinates": [[[40, 5], [40, 6], [41, 6], [41, 5], [40, 5]]]})
|
"coordinates": [[[40, 5], [40, 6], [41, 6], [41, 5], [40, 5]]]})
|
||||||
|
|
||||||
* ``near`` -- Find all the locations near a given point::
|
* ``near`` -- find all the locations near a given point::
|
||||||
|
|
||||||
loc.objects(point__near=[40, 5])
|
loc.objects(point__near=[40, 5])
|
||||||
loc.objects(point__near={"type": "Point", "coordinates": [40, 5]})
|
loc.objects(point__near={"type": "Point", "coordinates": [40, 5]})
|
||||||
|
|
||||||
|
You can also set the maximum distance in meters as well::
|
||||||
You can also set the maximum distance in meters as well::
|
|
||||||
|
|
||||||
loc.objects(point__near=[40, 5], point__max_distance=1000)
|
loc.objects(point__near=[40, 5], point__max_distance=1000)
|
||||||
|
|
||||||
|
|
||||||
The older 2D indexes are still supported with the
|
The older 2D indexes are still supported with the
|
||||||
:class:`~mongoengine.fields.GeoPointField`:
|
:class:`~mongoengine.fields.GeoPointField`:
|
||||||
|
|
||||||
* ``within_distance`` -- provide a list containing a point and a maximum
|
* ``within_distance`` -- provide a list containing a point and a maximum
|
||||||
distance (e.g. [(41.342, -87.653), 5])
|
distance (e.g. [(41.342, -87.653), 5])
|
||||||
* ``within_spherical_distance`` -- Same as above but using the spherical geo model
|
* ``within_spherical_distance`` -- same as above but using the spherical geo model
|
||||||
(e.g. [(41.342, -87.653), 5/earth_radius])
|
(e.g. [(41.342, -87.653), 5/earth_radius])
|
||||||
* ``near`` -- order the documents by how close they are to a given point
|
* ``near`` -- order the documents by how close they are to a given point
|
||||||
* ``near_sphere`` -- Same as above but using the spherical geo model
|
* ``near_sphere`` -- Same as above but using the spherical geo model
|
||||||
@ -198,12 +197,14 @@ However, this doesn't map well to the syntax so you can also use a capital S ins
|
|||||||
|
|
||||||
Post.objects(comments__by="joe").update(inc__comments__S__votes=1)
|
Post.objects(comments__by="joe").update(inc__comments__S__votes=1)
|
||||||
|
|
||||||
.. note:: Due to Mongo currently the $ operator only applies to the first matched item in the query.
|
.. note::
|
||||||
|
Due to :program:`Mongo`, currently the $ operator only applies to the
|
||||||
|
first matched item in the query.
|
||||||
|
|
||||||
|
|
||||||
Raw queries
|
Raw queries
|
||||||
-----------
|
-----------
|
||||||
It is possible to provide a raw PyMongo query as a query parameter, which will
|
It is possible to provide a raw :mod:`PyMongo` query as a query parameter, which will
|
||||||
be integrated directly into the query. This is done using the ``__raw__``
|
be integrated directly into the query. This is done using the ``__raw__``
|
||||||
keyword argument::
|
keyword argument::
|
||||||
|
|
||||||
@ -213,12 +214,12 @@ keyword argument::
|
|||||||
|
|
||||||
Limiting and skipping results
|
Limiting and skipping results
|
||||||
=============================
|
=============================
|
||||||
Just as with traditional ORMs, you may limit the number of results returned, or
|
Just as with traditional ORMs, you may limit the number of results returned or
|
||||||
skip a number or results in you query.
|
skip a number or results in you query.
|
||||||
:meth:`~mongoengine.queryset.QuerySet.limit` and
|
:meth:`~mongoengine.queryset.QuerySet.limit` and
|
||||||
:meth:`~mongoengine.queryset.QuerySet.skip` and methods are available on
|
:meth:`~mongoengine.queryset.QuerySet.skip` and methods are available on
|
||||||
:class:`~mongoengine.queryset.QuerySet` objects, but the prefered syntax for
|
:class:`~mongoengine.queryset.QuerySet` objects, but the `array-slicing` syntax
|
||||||
achieving this is using array-slicing syntax::
|
is preferred for achieving this::
|
||||||
|
|
||||||
# Only the first 5 people
|
# Only the first 5 people
|
||||||
users = User.objects[:5]
|
users = User.objects[:5]
|
||||||
@ -255,7 +256,7 @@ if more than one document matched the query. These exceptions are merged into
|
|||||||
your document definitions eg: `MyDoc.DoesNotExist`
|
your document definitions eg: `MyDoc.DoesNotExist`
|
||||||
|
|
||||||
A variation of this method exists,
|
A variation of this method exists,
|
||||||
:meth:`~mongoengine.queryset.Queryset.get_or_create`, that will create a new
|
:meth:`~mongoengine.queryset.QuerySet.get_or_create`, that will create a new
|
||||||
document with the query arguments if no documents match the query. An
|
document with the query arguments if no documents match the query. An
|
||||||
additional keyword argument, :attr:`defaults` may be provided, which will be
|
additional keyword argument, :attr:`defaults` may be provided, which will be
|
||||||
used as default values for the new document, in the case that it should need
|
used as default values for the new document, in the case that it should need
|
||||||
@ -266,9 +267,13 @@ to be created::
|
|||||||
>>> a.name == b.name and a.age == b.age
|
>>> a.name == b.name and a.age == b.age
|
||||||
True
|
True
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
:meth:`~mongoengine.queryset.QuerySet.get_or_create` method is deprecated
|
||||||
|
since :mod:`mongoengine` 0.8.
|
||||||
|
|
||||||
Default Document queries
|
Default Document queries
|
||||||
========================
|
========================
|
||||||
By default, the objects :attr:`~mongoengine.Document.objects` attribute on a
|
By default, the objects :attr:`~Document.objects` attribute on a
|
||||||
document returns a :class:`~mongoengine.queryset.QuerySet` that doesn't filter
|
document returns a :class:`~mongoengine.queryset.QuerySet` that doesn't filter
|
||||||
the collection -- it returns all objects. This may be changed by defining a
|
the collection -- it returns all objects. This may be changed by defining a
|
||||||
method on a document that modifies a queryset. The method should accept two
|
method on a document that modifies a queryset. The method should accept two
|
||||||
@ -311,7 +316,7 @@ Should you want to add custom methods for interacting with or filtering
|
|||||||
documents, extending the :class:`~mongoengine.queryset.QuerySet` class may be
|
documents, extending the :class:`~mongoengine.queryset.QuerySet` class may be
|
||||||
the way to go. To use a custom :class:`~mongoengine.queryset.QuerySet` class on
|
the way to go. To use a custom :class:`~mongoengine.queryset.QuerySet` class on
|
||||||
a document, set ``queryset_class`` to the custom class in a
|
a document, set ``queryset_class`` to the custom class in a
|
||||||
:class:`~mongoengine.Document`\ s ``meta`` dictionary::
|
:class:`~mongoengine.Document`'s ``meta`` dictionary::
|
||||||
|
|
||||||
class AwesomerQuerySet(QuerySet):
|
class AwesomerQuerySet(QuerySet):
|
||||||
|
|
||||||
@ -498,7 +503,7 @@ Documents may be updated atomically by using the
|
|||||||
There are several different "modifiers" that you may use with these methods:
|
There are several different "modifiers" that you may use with these methods:
|
||||||
|
|
||||||
* ``set`` -- set a particular value
|
* ``set`` -- set a particular value
|
||||||
* ``unset`` -- delete a particular value (since MongoDB v1.3+)
|
* ``unset`` -- delete a particular value (since MongoDB v1.3)
|
||||||
* ``inc`` -- increment a value by a given amount
|
* ``inc`` -- increment a value by a given amount
|
||||||
* ``dec`` -- decrement a value by a given amount
|
* ``dec`` -- decrement a value by a given amount
|
||||||
* ``push`` -- append a value to a list
|
* ``push`` -- append a value to a list
|
||||||
|
@ -35,25 +35,25 @@ Available signals include:
|
|||||||
:class:`~mongoengine.EmbeddedDocument` instance has been completed.
|
:class:`~mongoengine.EmbeddedDocument` instance has been completed.
|
||||||
|
|
||||||
`pre_save`
|
`pre_save`
|
||||||
Called within :meth:`~mongoengine.document.Document.save` prior to performing
|
Called within :meth:`~mongoengine.Document.save` prior to performing
|
||||||
any actions.
|
any actions.
|
||||||
|
|
||||||
`pre_save_post_validation`
|
`pre_save_post_validation`
|
||||||
Called within :meth:`~mongoengine.document.Document.save` after validation
|
Called within :meth:`~mongoengine.Document.save` after validation
|
||||||
has taken place but before saving.
|
has taken place but before saving.
|
||||||
|
|
||||||
`post_save`
|
`post_save`
|
||||||
Called within :meth:`~mongoengine.document.Document.save` after all actions
|
Called within :meth:`~mongoengine.Document.save` after all actions
|
||||||
(validation, insert/update, cascades, clearing dirty flags) have completed
|
(validation, insert/update, cascades, clearing dirty flags) have completed
|
||||||
successfully. Passed the additional boolean keyword argument `created` to
|
successfully. Passed the additional boolean keyword argument `created` to
|
||||||
indicate if the save was an insert or an update.
|
indicate if the save was an insert or an update.
|
||||||
|
|
||||||
`pre_delete`
|
`pre_delete`
|
||||||
Called within :meth:`~mongoengine.document.Document.delete` prior to
|
Called within :meth:`~mongoengine.Document.delete` prior to
|
||||||
attempting the delete operation.
|
attempting the delete operation.
|
||||||
|
|
||||||
`post_delete`
|
`post_delete`
|
||||||
Called within :meth:`~mongoengine.document.Document.delete` upon successful
|
Called within :meth:`~mongoengine.Document.delete` upon successful
|
||||||
deletion of the record.
|
deletion of the record.
|
||||||
|
|
||||||
`pre_bulk_insert`
|
`pre_bulk_insert`
|
||||||
|
@ -14,7 +14,7 @@ MongoDB. To install it, simply run
|
|||||||
MongoEngine.
|
MongoEngine.
|
||||||
|
|
||||||
:doc:`guide/index`
|
:doc:`guide/index`
|
||||||
The Full guide to MongoEngine - from modeling documents to storing files,
|
The Full guide to MongoEngine --- from modeling documents to storing files,
|
||||||
from querying for data to firing signals and *everything* between.
|
from querying for data to firing signals and *everything* between.
|
||||||
|
|
||||||
:doc:`apireference`
|
:doc:`apireference`
|
||||||
|
@ -428,6 +428,7 @@ class ObjectIdField(BaseField):
|
|||||||
class GeoJsonBaseField(BaseField):
|
class GeoJsonBaseField(BaseField):
|
||||||
|
|
||||||
"""A geo json field storing a geojson style object.
|
"""A geo json field storing a geojson style object.
|
||||||
|
|
||||||
.. versionadded:: 0.8
|
.. versionadded:: 0.8
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -436,8 +437,8 @@ class GeoJsonBaseField(BaseField):
|
|||||||
|
|
||||||
def __init__(self, auto_index=True, *args, **kwargs):
|
def __init__(self, auto_index=True, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
:param auto_index: Automatically create a "2dsphere" index. Defaults
|
:param bool auto_index: Automatically create a "2dsphere" index.\
|
||||||
to `True`.
|
Defaults to `True`.
|
||||||
"""
|
"""
|
||||||
self._name = "%sField" % self._type
|
self._name = "%sField" % self._type
|
||||||
if not auto_index:
|
if not auto_index:
|
||||||
|
@ -193,7 +193,7 @@ class Document(BaseDocument):
|
|||||||
in the database doesn't match the query.
|
in the database doesn't match the query.
|
||||||
|
|
||||||
.. note:: All unsaved changes that has been made to the document are
|
.. note:: All unsaved changes that has been made to the document are
|
||||||
rejected if the method returns True.
|
rejected if the method returns True.
|
||||||
|
|
||||||
:param query: the update will be performed only if the document in the
|
:param query: the update will be performed only if the document in the
|
||||||
database matches the query
|
database matches the query
|
||||||
@ -250,6 +250,7 @@ class Document(BaseDocument):
|
|||||||
:param _refs: A list of processed references used in cascading saves
|
:param _refs: A list of processed references used in cascading saves
|
||||||
:param save_condition: only perform save if matching record in db
|
:param save_condition: only perform save if matching record in db
|
||||||
satisfies condition(s) (e.g., version number)
|
satisfies condition(s) (e.g., version number)
|
||||||
|
|
||||||
.. versionchanged:: 0.5
|
.. versionchanged:: 0.5
|
||||||
In existing documents it only saves changed fields using
|
In existing documents it only saves changed fields using
|
||||||
set / unset. Saves are cascaded and any
|
set / unset. Saves are cascaded and any
|
||||||
|
@ -1860,6 +1860,7 @@ class PointField(GeoJsonBaseField):
|
|||||||
to set the value.
|
to set the value.
|
||||||
|
|
||||||
Requires mongodb >= 2.4
|
Requires mongodb >= 2.4
|
||||||
|
|
||||||
.. versionadded:: 0.8
|
.. versionadded:: 0.8
|
||||||
"""
|
"""
|
||||||
_type = "Point"
|
_type = "Point"
|
||||||
@ -1879,6 +1880,7 @@ class LineStringField(GeoJsonBaseField):
|
|||||||
You can either pass a dict with the full information or a list of points.
|
You can either pass a dict with the full information or a list of points.
|
||||||
|
|
||||||
Requires mongodb >= 2.4
|
Requires mongodb >= 2.4
|
||||||
|
|
||||||
.. versionadded:: 0.8
|
.. versionadded:: 0.8
|
||||||
"""
|
"""
|
||||||
_type = "LineString"
|
_type = "LineString"
|
||||||
@ -1901,6 +1903,7 @@ class PolygonField(GeoJsonBaseField):
|
|||||||
holes.
|
holes.
|
||||||
|
|
||||||
Requires mongodb >= 2.4
|
Requires mongodb >= 2.4
|
||||||
|
|
||||||
.. versionadded:: 0.8
|
.. versionadded:: 0.8
|
||||||
"""
|
"""
|
||||||
_type = "Polygon"
|
_type = "Polygon"
|
||||||
@ -1921,6 +1924,7 @@ class MultiPointField(GeoJsonBaseField):
|
|||||||
to set the value.
|
to set the value.
|
||||||
|
|
||||||
Requires mongodb >= 2.6
|
Requires mongodb >= 2.6
|
||||||
|
|
||||||
.. versionadded:: 0.9
|
.. versionadded:: 0.9
|
||||||
"""
|
"""
|
||||||
_type = "MultiPoint"
|
_type = "MultiPoint"
|
||||||
@ -1941,6 +1945,7 @@ class MultiLineStringField(GeoJsonBaseField):
|
|||||||
You can either pass a dict with the full information or a list of points.
|
You can either pass a dict with the full information or a list of points.
|
||||||
|
|
||||||
Requires mongodb >= 2.6
|
Requires mongodb >= 2.6
|
||||||
|
|
||||||
.. versionadded:: 0.9
|
.. versionadded:: 0.9
|
||||||
"""
|
"""
|
||||||
_type = "MultiLineString"
|
_type = "MultiLineString"
|
||||||
@ -1968,6 +1973,7 @@ class MultiPolygonField(GeoJsonBaseField):
|
|||||||
of Polygons.
|
of Polygons.
|
||||||
|
|
||||||
Requires mongodb >= 2.6
|
Requires mongodb >= 2.6
|
||||||
|
|
||||||
.. versionadded:: 0.9
|
.. versionadded:: 0.9
|
||||||
"""
|
"""
|
||||||
_type = "MultiPolygon"
|
_type = "MultiPolygon"
|
||||||
|
@ -402,6 +402,7 @@ class BaseQuerySet(object):
|
|||||||
will force an fsync on the primary server.
|
will force an fsync on the primary server.
|
||||||
:param _from_doc_delete: True when called from document delete therefore
|
:param _from_doc_delete: True when called from document delete therefore
|
||||||
signals will have been triggered so don't loop.
|
signals will have been triggered so don't loop.
|
||||||
|
|
||||||
:returns number of deleted documents
|
:returns number of deleted documents
|
||||||
"""
|
"""
|
||||||
queryset = self.clone()
|
queryset = self.clone()
|
||||||
@ -989,7 +990,7 @@ class BaseQuerySet(object):
|
|||||||
def aggregate(self, *pipeline, **kwargs):
|
def aggregate(self, *pipeline, **kwargs):
|
||||||
"""
|
"""
|
||||||
Perform a aggregate function based in your queryset params
|
Perform a aggregate function based in your queryset params
|
||||||
:param pipeline: list of aggregation commands,
|
:param pipeline: list of aggregation commands,\
|
||||||
see: http://docs.mongodb.org/manual/core/aggregation-pipeline/
|
see: http://docs.mongodb.org/manual/core/aggregation-pipeline/
|
||||||
|
|
||||||
.. versionadded:: 0.9
|
.. versionadded:: 0.9
|
||||||
|
Loading…
x
Reference in New Issue
Block a user