mongolike-operations
Define Flow interfaces of MongoDB-like operations used in Phenyl modules.
OAD: Operations As Data
Operations As Data(OAD) is the concept of handling large JSON data that all the data operations (update/find) should be written as JSON format (≒ plain object).
This mongolike-operations
defines these Operation type.
Phenyl Family
mongolike-operation
is one of Phenyl Family.
Phenyl is a JavaScript Server/Client framework for State Synchronization over Environment(SSoE).
Types
FindOperation
Operation to find values in large JSON.
Type:
type FindOperation = SimpleFindOperation | | $and: Array<FindOperation> | | | $nor: Array<FindOperation> | | | $or: Array<FindOperation> | type SimpleFindOperation = fieldName: DocumentPath: QueryCondition | EqCondition type EqCondition = Object | Array<Basic> | string | number | boolean// QueryCondition: See below section
Example:
const findOperation = $and: libraryName: 'phenyl' 'libraryVersion.major': $gte: 1
QueryCondition
Condition to find values in large JSON, included in FindOperation
.
Almost compatible with MongoDB's Query Operators.
interface QueryCondition // comparison $eq?: any $gt?: any $gte?: any $in?: Array<any> $lt?: any $lte?: any $ne?: any $nin?: Array<any> // logical $not?: QueryCondition // element $exists?: boolean $type?: BSONTypeNumber | BSONTypeString // evaluation $mod?: number number $regex?: RegExp | string $options?: RegExp$flags $text?: TextQueryCondition $where?: Function // To Be Implemented // geospatial $geoIntersects?: Object // To Be Implemented $geoWithin?: Object // To Be Implemented $near?: Object // To Be Implemented $nearSphere?: Object // To Be Implemented // array $all?: Array<any> $elemMatch?: QueryCondition $size?: number // bitwise $bitsAllClear?: number // Currently, only number is allowed $bitsAllSet?: number // Currently, only number is allowed $bitsAnyClear?: number // Currently, only number is allowed $bitsAnySet?: number // Currently, only number is allowed // comments // $comment: // No implementation
UpdateOperation
Operations to update values of large JSON. Almost compatible with MongoDB's Update Operators.
See README of power-assign for more detailed use.
Restorable
Restorable is a characteristic of JavaScript class instances which meets the following requirement.
const jsonStr = JSONconst plain = JSONconst newInstance = plain assert
Roughly, Restorable object is an instance which can re-created by passing its JSON object to the class constructor.
See is-restorable module for more detail.
DocumentPath
The same definition as Amazon DynamoDB's DocumentPath.
type DocumentPath = string
DocumentPath expresses nested value location.
foo: arr: bar: 'baz'
The string 'baz'
is expressed as 'foo.arr[0].bar'
in DocumentPath format.
This DocumentPath is slightly different from Dot Notation in MongoDB which expresses 'baz'
as 'foo.arr.0.bar'
(array index expression is different).
LICENSE
Apache License 2.0