-
Notifications
You must be signed in to change notification settings - Fork 0
Whats New
Aryeh Citron edited this page May 12, 2026
·
2 revisions
BREAKING: Upgraded from MongoDB.Driver 2.30.0 to 3.8.1.
- MongoDB.Driver 3.8.1 — upgraded from 2.30.0 (major version bump)
- Removed separate
MongoDB.Driver.GridFSpackage (now included in MongoDB.Driver 3.x) - Added
IMongoClient.BulkWrite/BulkWriteAsyncstubs (client-level bulk write, throwsNotSupportedException) - Added
IDisposable.Dispose()onInMemoryMongoClient(no-op, required byIMongoClientin Driver 3.x) - LINQ2 provider no longer available (removed in Driver 3.x — LINQ3 only)
- Updated
SdkVersionDriftDetectortested version range to 3.0.0–3.8.1
- 26 tests converted from InMemoryOnly to real MongoDB parity
- Change stream tests rewritten with async polling for real MongoDB compatibility
- Unknown
RunCommandcommands now throwMongoCommandException(code 59) - Numerous bug fixes:
$rename,$pushmodifiers,Distinctnull handling,$gt/$ltnull,$getField, and more
- Unique index enforcement on all write paths (Insert, Replace, Update, FindOneAnd*)
- Compound unique indexes — multi-field uniqueness validation
- Sparse index support — documents missing indexed fields excluded from uniqueness checks
- Partial filter expression — unique constraint only applies to matching documents
- TTL index enforcement with lazy eviction on queries
- TTL array field support (uses earliest date)
-
partialFilterExpressionstored in index metadata and returned byListIndexes - Index creation validates existing documents for uniqueness violations
-
Fault injection via
InMemoryMongoCollection.FaultInjectorfor simulating errors -
Operation logging via
OperationLogfor recording and asserting operations -
Concurrency safety — per-document
SemaphoreSlimlocking prevents lost-update race conditions - Atomic
DocumentStore.Update()function for safe concurrent modifications
- Capped collections with MaxDocuments, MaxSize, FIFO eviction, insertion order
-
Tailable cursors (
CursorType.TailableandTailableAwait) -
$jsonSchemafilter with required, bsonType, numeric/string/array constraints, enum, pattern -
$wherefilter with pluggable evaluator -
$functionexpression operator with pluggable evaluator -
$accumulatorgroup operator with pluggable evaluator -
JsTriggers package —
JsExpressionSetup.Register()enables JavaScript execution via Jint
- InMemoryGridFSBucket — Upload (bytes + stream), download (by id + by name), delete, rename, find, drop
- Chunked storage matching real GridFS file/chunk structure
- Configurable chunk size
-
$textfilter with$search,$caseSensitive -
$geoWithin,$geoIntersects,$near,$nearSpheregeospatial filters - Full geometric calculations via NetTopologySuite
- Array filter operators:
$all,$elemMatch,$size - Bitwise operators:
$bitsAllSet,$bitsAllClear,$bitsAnySet,$bitsAnyClear -
$modoperator - Additional aggregation expression operators
- 34 aggregation pipeline stages
- 100+ expression operators
- Database views via
CreateView() - Window functions in
$setWindowFields
- DI registration:
UseInMemoryMongoDB(),UseInMemoryMongoCollections() - Change streams (collection and client level)
- Transactions with snapshot isolation
- State persistence (Export/Import)
- Full CRUD operations
- Filter, sort, projection, skip, limit
- Update operators ($set, $inc, $push, etc.)
- BulkWrite with ordered/unordered modes
- Index manager (metadata only)
-
InMemoryMongoClient,InMemoryMongoDatabase,InMemoryMongoCollection<T> - Basic document storage with ConcurrentDictionary
- BsonDocument serialization/deserialization
-
InMemoryMongo.Create<T>()factory
- Features — Complete feature reference
- Known Limitations — Current limitations
Getting Started
Integration & Dependency Injection
Data Management
Reference
- Feature Comparison
- Features
- Filter & Update Operators
- Aggregation Pipeline
- LINQ Support
- API Reference
Help