MongoDB (beta notes)
A collection of notes on the state of Breeze + MongoDB integration.
TODO
We’re actively working on considering or resolving these issues and incorporating support where possible.
- Expands and navigation props that involve joins.
- Automatic server side validation.
- No OData functions except startsWith, endsWith, substringOf. Note: All comparison operators “>, >=, <, <=, ==” are supported.
- As of 1.4, only Guids stored as ‘strings’ are supported.
Issues and warnings
- MongoDB doesn’t support case insensitive sorts (except by creating a ‘lowercased’ version of a column). We need to set Breeze’s sorting to match (not yet done). Note: We do perform case insensitive searches because of the use of regex.
- MongoDB doesn’t support “embedded” functions, so most OData expressions involving functions get translated to MongoDB where clauses.
- MongoDB doesn’t support multipart keys.
- MongoDB doesn’t support primary key sharing between collections; so the idea of an Order and an InternationalOrder as different collections with the same key does not make sense.
- SQL data with padded strings behave differently on a query than MongoDB does. The ANSI standard requires padding for the character strings used in comparisons so that their lengths match before comparing them. MongoDB does not do this.
- Semantics for comparison with nulls are different between SQL and MongoDB – date1 > null in MongoDB , but not in SQL.
- MongoDB has no equivalent of timestamp or rowversion columns that are automatically generated on insert or update. (Except MongoDB ’s ObjectID).
- MongoDB has no concept of a computed column.
- MongoDB has no TimeSpan datetype.