Mongodb compatibility

Logical operators

Operator Status Notes
$or Y  
$and Y  
$not Y  
$nor N  

Element level operators

Operator Status Notes
$exists Y  
$mod N  
$bit N  
$type N  
$where N JavaScript. EJDB library does not embed a JS engine. It may be hard to include this type of engine into embedded DB.
$regex YN Regexps are supported in queries.

Geospartial operators

Operator Status Notes
$geoWithin, $geoIntersects, $near, $nearSphere N  

Array operators

Operator Status Notes
$elemMatch Y  
$(projection) Y Our implementation overcomes the following mongodb restriction: “Only one array field can appear in the query document”
$size N  

Update operators

Operator Status Notes
$set Y  
$unset Y  
$(query) Y  
$addToSet, $pull Y The EJDB specific $addToSetAll, $pullAll are also implemented.
$setOnInsert YN Special $upsert operator is used. Behaviour is a bit different
$each YN $addToSetAll is used instead
$rename Y  
$slice Y  
$sort N  
$push Y $pushAll is the batch version of $push operator.

Various operators

Operator Status Notes
$orderby Y  
$fields Y  
$maxScan YN EJDB $max operator is used
$hint N Explicit index selection hints are reserved. But they can not be used in the current EJDB version
$max, $min, $returnKey, $comment N  
$explain NN Used simple logging facility to trace query execution
$showDiskLoc NN Mongodb implementation specific feature

EJDB specific query operators

Operator Notes
$dropall In-place record removal operation
$bt Matching between a numbers (as in SQL)
$do Perform an action, for example In-query join of two collections
$icase Case insensitive string matching
$begin String prefix matching. Available collection indexes may be in use
$strand , $stror String tokens/String array matches all/any token in specified array
$addToSetAll , $pullAll Batch versions of $addToSet , $pull