class Document(BaseModel, UpdateMethods)
Document Mapping class.
Fields:
id
- MongoDB document ObjectID "_id" field. Mapped to the PydanticObjectId class
Inherited from:
- Pydantic BaseModel
- UpdateMethods
| async insert(session: Optional[ClientSession] = None) -> DocType
Insert the document (self) to the collection
Returns:
Document
| async create(session: Optional[ClientSession] = None) -> DocType
The same as self.insert()
Returns:
Document
| @classmethod
| async insert_one(cls: Type[DocType], document: DocType, session: Optional[ClientSession] = None) -> InsertOneResult
Insert one document to the collection
Arguments:
document
: Document - document to insertsession
: ClientSession - pymongo session
Returns:
InsertOneResult
| @classmethod
| async insert_many(cls: Type[DocType], documents: List[DocType], session: Optional[ClientSession] = None) -> InsertManyResult
Insert many documents to the collection
Arguments:
documents
: List["Document"] - documents to insertsession
: ClientSession - pymongo session
Returns:
InsertManyResult
| @classmethod
| async get(cls: Type[DocType], document_id: PydanticObjectId, session: Optional[ClientSession] = None) -> Optional[DocType]
Get document by id
Arguments:
document_id
: PydanticObjectId - document idsession
: Optional[ClientSession] - pymongo session
Returns:
Union["Document", None]
| @classmethod
| find_one(cls, *args: Union[Dict[str, Any], Mapping[str, Any], bool], *, projection_model: Optional[Type[BaseModel]] = None, session: Optional[ClientSession] = None) -> FindOne
Find one document by criteria. Returns FindOne query object
Arguments:
args
: *Union[Dict[str, Any], Mapping[str, Any], bool] - search criteriaprojection_model
: Optional[Type[BaseModel]] - projection modelsession
: Optional[ClientSession] - pymongo session instance
Returns:
FindOne - find query instance
| @classmethod
| find_many(cls, *args: Union[Dict[str, Any], Mapping[str, Any], bool], *, skip: Optional[int] = None, limit: Optional[int] = None, sort: Union[None, str, List[Tuple[str, SortDirection]]] = None, projection_model: Optional[Type[BaseModel]] = None, session: Optional[ClientSession] = None) -> FindMany
Find many documents by criteria. Returns FindMany query object
Arguments:
args
: *Union[Dict[str, Any], Mapping[str, Any], bool] - search criteriaskip
: Optional[int] - The number of documents to omit.limit
: Optional[int] - The maximum number of results to return.sort
: Union[None, str, List[Tuple[str, SortDirection]]] - A key or a list of (key, direction) pairs specifying the sort order for this query.projection_model
: Optional[Type[BaseModel]] - projection modelsession
: Optional[ClientSession] - pymongo session
Returns:
FindMany - query instance
| @classmethod
| find(cls, *args: Union[Dict[str, Any], Mapping[str, Any], bool], *, skip: Optional[int] = None, limit: Optional[int] = None, sort: Union[None, str, List[Tuple[str, SortDirection]]] = None, projection_model: Optional[Type[BaseModel]] = None, session: Optional[ClientSession] = None) -> FindMany
The same as find_many
| @classmethod
| find_all(cls, skip: Optional[int] = None, limit: Optional[int] = None, sort: Union[None, str, List[Tuple[str, SortDirection]]] = None, projection_model: Optional[Type[BaseModel]] = None, session: Optional[ClientSession] = None) -> FindMany
Get all the documents
Arguments:
skip
: Optional[int] - The number of documents to omit.limit
: Optional[int] - The maximum number of results to return.sort
: Union[None, str, List[Tuple[str, SortDirection]]] - A key or a list of (key, direction) pairs specifying the sort order for this query.projection_model
: Optional[Type[BaseModel]] - projection modelsession
: Optional[ClientSession] - pymongo session
Returns:
FindMany - query instance
| @classmethod
| all(cls, skip: Optional[int] = None, limit: Optional[int] = None, sort: Union[None, str, List[Tuple[str, SortDirection]]] = None, projection_model: Optional[Type[BaseModel]] = None, session: Optional[ClientSession] = None) -> FindMany
the same as find_all
| async replace(session: Optional[ClientSession] = None) -> DocType
Fully update the document in the database
Arguments:
session
: Optional[ClientSession] - pymongo session.
Returns:
None
| async save(session: Optional[ClientSession] = None) -> DocType
Update an existing model in the database or insert it if it does not yet exist.
Arguments:
session
: Optional[ClientSession] - pymongo session.
Returns:
None
| @classmethod
| async replace_many(cls: Type[DocType], documents: List[DocType], session: Optional[ClientSession] = None) -> None
Replace list of documents
Arguments:
documents
: List["Document"]session
: Optional[ClientSession] - pymongo session.
Returns:
None
| async update(*args, *, session: Optional[ClientSession] = None) -> None
Partially update the document in the database
Arguments:
args
: *Union[dict, Mapping] - the modifications to apply.session
: ClientSession - pymongo session.
Returns:
None
| @classmethod
| update_all(cls, *args: Union[dict, Mapping], *, session: Optional[ClientSession] = None) -> UpdateMany
Partially update all the documents
Arguments:
args
: *Union[dict, Mapping] - the modifications to apply.session
: ClientSession - pymongo session.
Returns:
UpdateMany query
| async delete(session: Optional[ClientSession] = None) -> DeleteResult
Delete the document
Arguments:
session
: Optional[ClientSession] - pymongo session.
Returns:
DeleteResult - pymongo DeleteResult instance.
| @classmethod
| async delete_all(cls, session: Optional[ClientSession] = None) -> DeleteResult
Delete all the documents
Arguments:
session
: Optional[ClientSession] - pymongo session.
Returns:
DeleteResult - pymongo DeleteResult instance.
| @classmethod
| aggregate(cls, aggregation_pipeline: list, projection_model: Type[BaseModel] = None, session: Optional[ClientSession] = None) -> AggregationQuery
Aggregate over collection. Returns AggregationQuery query object
Arguments:
aggregation_pipeline
: list - aggregation pipelineprojection_model
: Type[BaseModel]session
: Optional[ClientSession]
Returns:
| @classmethod
| async count(cls) -> int
Number of documents in the collections The same as find_all().count()
Returns:
int
| @classmethod
| async init_collection(cls, database: AsyncIOMotorDatabase, allow_index_dropping: bool) -> None
Internal CollectionMeta class creator
Arguments:
database
: AsyncIOMotorDatabase - motor database instanceallow_index_dropping
: bool - if index dropping is allowed
Returns:
None
| @classmethod
| get_motor_collection(cls) -> AsyncIOMotorCollection
Get Motor Collection to access low level control
Returns:
AsyncIOMotorCollection
| @classmethod
| async inspect_collection(cls, session: Optional[ClientSession] = None) -> InspectionResult
Check, if documents, stored in the MongoDB collection are compatible with the Document schema
Returns:
InspectionResult