This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener). # Fixed URLs ## Fixed Success These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended. * [ ] http://www.apache.org/licenses/ with 1 occurrences migrated to: https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200). * [ ] http://www.apache.org/licenses/LICENSE-2.0 with 426 occurrences migrated to: https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).
Spring Data MongoDB 2.1 - Schema & Validation Example
MongoDB (as of version 3.2) supports validating documents against a given structure described by a query.
{
"name" : {
"$exists" : true,
"$ne" : null,
"$type" : 2
},
"age" : {
"$exists" : true,
"$ne" : null,
"$type" : 16,
"$gte" : 0,
"$lte" : 125
}
}
The structure can be built from Criteria objects in the same way as they are used for defining queries.
Validator.criteria(where("name").exists(true).ne(null).type(2)
.and("age").exists(true).ne(null).type(16).gte(0).lte(125));
MongoDB 3.6 supports collections that validate documents against a provided JSON Schema that complies with the JSON schema specification (draft 4).
{
"type": "object",
"required": [ "name", "age" ],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"age": {
"type": "int",
"minimum" : 0,
"exclusiveMinimum" : false,
"maximum" : 125,
"exclusiveMaximum" : false
}
}
}
The MongoJsonSchema and its builder allow fluent schema definition via the Java API.
MongoJsonSchema schema = MongoJsonSchema.builder() //
.required("name", "age") //
.properties( //
string("name").minLength(1), //
int32("age").gte(0).lte(125) //
).build();
The schema can be used for various funcitionality: Set up Document validation for a collection:
template.createCollection(Jedi.class, CollectionOptions.empty().validator(Validator.schema(schema)));
and to query the store for documents matching a given blueprint:
template.find(query(matchingDocumentStructure(schema)), Jedi.class);