///////////////////////////////////////////////////////////////
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
///////////////////////////////////////////////////////////////

[[extension-es-mongodb,MongoDB EntityStore]]
= MongoDB EntityStore =

[devstatus]
--------------
source=extensions/entitystore-mongodb/dev-status.xml
--------------

EntityStore service backed by a http://www.mongodb.org/[MongoDB] collection in which Entity state is stored as native
MongoDB BSON.

include::../../build/docs/buildinfo/artifact.txt[]

== Assembly ==

Assembly is done using the provided Assembler:

[snippet,java]
----
source=extensions/entitystore-mongodb/src/test/java/org/apache/zest/entitystore/mongodb/MongoMapEntityStoreTest.java
tag=assembly
----

== Configuration ==

Here are the configuration properties for the MongoDB EntityStore:

[snippet,java]
----
source=extensions/entitystore-mongodb/src/main/java/org/apache/zest/entitystore/mongodb/MongoEntityStoreConfiguration.java
tag=config
----
