mongo¶
  MongoCollection (EntryCollection)  ¶
 Class for querying MongoDB collections (implemented by either pymongo or mongomock) containing serialized EntryResources objects.
 __init__(self, name, resource_cls, resource_mapper, database='optimade')  special  ¶
 Initialize the MongoCollection for the given parameters.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
| name | str | The name of the collection. | required | 
| resource_cls | EntryResource | The type of entry resource that is stored by the collection. | required | 
| resource_mapper | BaseResourceMapper | A resource mapper object that handles aliases and format changes between deserialization and response. | required | 
| database | str | The name of the underlying MongoDB database to connect to. | 'optimade' | 
Source code in optimade/server/entry_collections/mongo.py
 def __init__(
    self,
    name: str,
    resource_cls: EntryResource,
    resource_mapper: BaseResourceMapper,
    database: str = CONFIG.mongo_database,
):
    """Initialize the MongoCollection for the given parameters.
    Parameters:
        name: The name of the collection.
        resource_cls: The type of entry resource that is stored by the collection.
        resource_mapper: A resource mapper object that handles aliases and
            format changes between deserialization and response.
        database: The name of the underlying MongoDB database to connect to.
    """
    super().__init__(
        resource_cls,
        resource_mapper,
        MongoTransformer(mapper=resource_mapper),
    )
    self.parser = LarkParser(version=(1, 0, 0), variant="default")
    self.collection = CLIENT[database][name]
    # check aliases do not clash with mongo operators
    self._check_aliases(self.resource_mapper.all_aliases())
    self._check_aliases(self.resource_mapper.all_length_aliases())
 count(self, **kwargs) ¶
 Returns the number of entries matching the query specified by the keyword arguments.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
| kwargs | dict | Query parameters as keyword arguments. The keys 'filter', 'skip', 'limit', 'hint' and 'maxTimeMS' will be passed to the  | {} | 
Source code in optimade/server/entry_collections/mongo.py
 def count(self, **kwargs) -> int:
    """Returns the number of entries matching the query specified
    by the keyword arguments.
    Parameters:
        kwargs (dict): Query parameters as keyword arguments. The keys
            'filter', 'skip', 'limit', 'hint' and 'maxTimeMS' will be passed
            to the `pymongo.collection.Collection.count_documents` method.
    """
    for k in list(kwargs.keys()):
        if k not in ("filter", "skip", "limit", "hint", "maxTimeMS"):
            del kwargs[k]
    if "filter" not in kwargs:  # "filter" is needed for count_documents()
        kwargs["filter"] = {}
    return self.collection.count_documents(**kwargs)
 insert(self, data) ¶
 Add the given entries to the underlying database.
Warning
No validation is performed on the incoming data.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
| data | List[optimade.models.entries.EntryResource] | The entry resource objects to add to the database. | required | 
Source code in optimade/server/entry_collections/mongo.py
 def insert(self, data: List[EntryResource]) -> None:
    """Add the given entries to the underlying database.
    Warning:
        No validation is performed on the incoming data.
    Arguments:
        data: The entry resource objects to add to the database.
    """
    self.collection.insert_many(data)