Эта глава предоставляет визуальный справочник по объектам и функциям, доступным в X DevAPI.
Синтаксис для этого объекта в EBNF:
Session
::= '.getSchema(' StringLiteral ')'
| '.getSchemas()'
| '.createSchema(' StringLiteral ')'
| '.dropSchema(' StringLiteral ')'
| '.getDefaultSchema()'
| '.startTransaction()'
| '.commit()'
| '.rollback()'
| '.setSavepoint()'
| '.setSavepoint(' StringLiteral ')'
| '.releaseSavePoint(' StringLiteral ')'
| '.rollbackTo(' StringLiteral ')'
| '.close()'
| SqlExecute
Рис. 11.1. Session
Синтаксис для этой функции в EBNF:
SqlExecute
::= '.sql(' SqlStatementStr ')'
( '.bind(' Literal (',' Literal)* ')')*
( '.execute()' )?
Рис. 11.2. SqlExecute
Синтаксис для этой функции в EBNF:
SQLPlaceholderValues
::= '{' SQLPlaceholderName ':' ( SQLLiteral ) '}'
Рис. 11.3. SQLPlaceholderValues
Синтаксис для этой функции в EBNF:
SQLPlaceholderName ::= '?'
Рис. 11.4. SQLPlaceholderName
Синтаксис для этой функции в EBNF:
SQLLiteral ::= '"' StringLiteral '"' | Number | Document
Рис. 11.5. SQLLiteral
Синтаксис для этой функции в EBNF:
Schema
::= '.getName()'
| '.existsInDatabase()'
| '.getSession()'
| '.getCollection(' StringLiteral ')'
| '.getCollections()'
| '.getCollectionAsTable(' StringLiteral ')'
| '.dropCollection(' StringLiteral ')'
| '.getTable(' StringLiteral ')'
| '.getTables()'
| '.createCollection(' StringLiteral ')'
Рис. 11.6. Schema
Синтаксис для этой функции в EBNF:
Collection
::= '.getSchema()'
| '.getName()'
| '.getSession()'
| '.existsInDatabase()'
| '.replaceOne(' DocumentId ',' DocumentOrJSON ')'
| '.addOrReplaceOne(' DocumentId ',' DocumentOrJSON ')'
| '.getOne(' DocumentId ')'
| '.removeOne(' DocumentId ')'
| CollectionFindFunction
| CollectionModifyFunction
| CollectionAddFunction
| CollectionRemoveFunction
| CollectionCreateIndex
| CollectionDropIndex
Рис. 11.7. Collection
Синтаксис для этой функции в EBNF:
Table
::= '.getSchema()'
| '.getName()'
| '.getSession()'
| '.existsInDatabase()'
| '.isView()'
| TableSelectFunction
| TableUpdateFunction
| TableInsertFunction
| TableDeleteFunction
Рис. 11.8. Table
Синтаксис для этой функции в EBNF:
CollectionFindFunction
::= '.find(' SearchConditionStr? ')' ( '.fields(' ProjectedDocumentExprStr ')' )?
( '.groupBy(' SearchExprStrList ')' )? ( '.having(' SearchConditionStr ')' )?
( '.sort(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' ( '.offset(' NumberOfRows ')' )? )?
( '.lockExclusive(' LockContention ')' | '.lockShared(' LockContention ')' )?
( '.bind(' PlaceholderValues ')' )*
( '.execute()' )?
Рис. 11.9. CollectionFindFunction

Синтаксис для этой функции в EBNF:
CollectionModifyFunction
::= '.modify(' SearchConditionStr ')'
( '.set(' CollectionField ',' ExprOrLiteral ')' |
'.unset(' CollectionFields ')' |
'.arrayInsert(' CollectionField ',' ExprOrLiteral ')' |
'.arrayAppend(' CollectionField ',' ExprOrLiteral ')' |
'.arrayDelete(' CollectionField ')' |
'.patch(' DocumentOrJSON ')'
)+
( '.sort(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
( '.bind(' PlaceholderValues ')' )*
( '.execute()' )?
Рис. 11.10. CollectionModifyFunction
Синтаксис для этой функции в EBNF:
CollectionAddFunction
::= ( '.add(' ( DocumentOrJSON | '[' DocumentOrJSON ( ',' DocumentOrJSON )* ']' )? ')' )+
( '.execute()' )?
Рис. 11.11. CollectionAddFunction

Синтаксис для этой функции в EBNF:
CollectionRemoveFunction
::= '.remove(' SearchConditionStr ')'
( '.sort(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
( '.bind(' PlaceholderValues ')' )*
( '.execute()' )?
Рис. 11.12. CollectionRemoveFunction
Синтаксис для этой функции в EBNF:
CollectionCreateIndex
::= '.createIndex(' StringLiteral ',' DocumentOrJSON ')'
Рис. 11.13. CollectionCreateIndexFunction
Синтаксис для этой функции в EBNF:
CollectionDropIndex
::= '.dropIndex(' StringLiteral ')'
Рис. 11.14. CollectionDropIndex
Table.select() и
collection.find()
используют различные методы для сортировки результатов.
Table.select()
следует за языковым обозначением SQL и вызывает метод сортировки
orderBy().
Collection.find() так не делает.
Используйте метод sort(), чтобы
сортировать результаты, возвращенные
Collection.find().
Близость со стандартом SQL считают более важной, чем однородность API.
Синтаксис для этой функции в EBNF:
TableSelectFunction
::= '.select(' ProjectedSearchExprStrList? ')' ( '.where(' SearchConditionStr ')' )?
( '.groupBy(' SearchExprStrList ')' )? ( '.having(' SearchConditionStr ')' )?
( '.orderBy(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' ( '.offset(' NumberOfRows ')' )? )?
( '.lockExclusive(' LockContention ')' | '.lockShared(' LockContention ')' )?
( '.bind(' ( PlaceholderValues ) ')' )*
( '.execute()' )?
Рис. 11.15. TableSelectFunction
Синтаксис для этой функции в EBNF:
TableInsertFunction
::= '.insert(' ( TableFields )? ')'
( '.values(' Literal (',' Literal)* ')' )+
( '.execute()' )?
Рис. 11.16. TableInsertFunction
Синтаксис для этой функции в EBNF:
TableUpdateFunction
::= '.update()'
( '.set(' TableField ',' ExprOrLiteral ')' )+ '.where(' SearchConditionStr ')'
( '.orderBy(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
( '.bind(' ( PlaceholderValues ) ')' )*
( '.execute()' )?
Рис. 11.17. TableUpdateFunction
Синтаксис для этой функции в EBNF:
TableDeleteFunction
::= '.delete()' '.where(' SearchConditionStr ')'
( '.orderBy(' SortExprStrList ')' )? ( '.limit(' NumberOfRows ')' )?
( '.bind(' ( PlaceholderValues ) ')' )*
( '.execute()' )?
Рис. 11.18. TableDeleteFunction
Синтаксис для этой функции в EBNF:
Result
::= '.getAffectedItemsCount()'
| '.getAutoIncrementValue()'
| '.getGeneratedIds()'
| '.getWarningCount()'
| '.getWarnings()'
Рис. 11.19. Result
Синтаксис для этой функции в EBNF:
DocResult
::= '.getWarningCount()'
| '.getWarnings()'
| '.fetchAll()'
| '.fetchOne()'
Рис. 11.20. DocResult
Синтаксис для этой функции в EBNF:
RowResult
::= '.getWarningCount()'
| '.getWarnings()'
| '.fetchAll()'
| '.fetchOne()'
| '.getColumns()'
Рис. 11.21. RowResult
Синтаксис для этой функции в EBNF:
Column
::= '.getSchemaName()'
| '.getTableName()'
| '.getTableLabel()'
| '.getColumnName()'
| '.getColumnLabel()'
| '.getType()'
| '.getLength()'
| '.getFractionalDigits()'
| '.isNumberSigned()'
| '.getCollationName()'
| '.getCharacterSetName()'
| '.isPadded()'
Рис. 11.22. Column
Синтаксис для этой функции в EBNF:
SqlResult
::= '.getWarningCount()'
| '.getWarnings()'
| '.fetchAll()'
| '.fetchOne()'
| '.getColumns()'
| '.getAutoIncrementValue()'
| '.hasData()'
| '.nextResult()'
Рис. 11.23. SqlResult
Синтаксис для этой функции в EBNF:
SearchConditionStr ::= '"' Expression '"'
Рис. 11.24. SearchConditionStr
Синтаксис для этой функции в EBNF:
SearchExprStrList ::= '[' '"' Expression '"' ( ',' '"' Expression '"' )* ']'
Рис. 11.25. SearchExprStrList
Синтаксис для этой функции в EBNF:
ProjectedDocumentExprStr
::= ProjectedSearchExprStrList | 'expr("' JSONDocumentExpression '")'
Рис. 11.26. ProjectedDocumentExprStr
Синтаксис для этой функции в EBNF:
ProjectedSearchExprStrList ::= '[' '"' Expression ( 'AS' Alias )? '"' ( ',' '"' Expression ( 'AS' Alias )? '"' )* ']'
Рис. 11.27. ProjectedSearchExprStrList
Синтаксис для этой функции в EBNF:
SortExprStrList ::= '[' '"' Expression ( 'ASC' | 'DESC' )? '"' ( ',' '"' Expression ( 'ASC' | 'DESC' )? '"' )* ']'
Рис. 11.28. SortExprStrList
Синтаксис для этой функции в EBNF:
ExprOrLiteral
::= 'expr("' Expression '")' | Literal
Рис. 11.29. ExprOrLiteral
Синтаксис для этой функции в EBNF:
ExprOrLiterals ::= ExprOrLiteral ( ',' ExprOrLiteral )*
Рис. 11.30. ExprOrLiterals
Синтаксис для этой функции в EBNF:
ExprOrLiteralOrOperand ::= ExprOrLiteral
Рис. 11.31. ExprOrLiteralOrOperand
Синтаксис для этой функции в EBNF:
PlaceholderValues
::= '{' PlaceholderName ':' ( ExprOrLiteral ) '}'
Рис. 11.32. PlaceholderValues
Синтаксис для этой функции в EBNF:
PlaceholderName ::= NamedPlaceholderNotQuestionmarkNotNumbered
Рис. 11.33. PlaceholderName
Синтаксис для этой функции в EBNF:
CollectionFields ::= ( '[' CollectionField ( ',' CollectionField )* ']' )
Рис. 11.34. CollectionFields
Синтаксис для этой функции в EBNF:
CollectionField ::= '@'? DocPath
Рис. 11.35. CollectionField
Синтаксис для этой функции в EBNF:
DocPath ::= ( '[*]' | ( '[' Index ']' ) | '.*' | ( '.' StringLiteral ) | '**' )+
Рис. 11.36. DocPath
Синтаксис для этой функции в EBNF:
Literal ::= '"' StringLiteral '"' | Number | true | false | Document
Рис. 11.37. Literal
Рис. 11.38. Expression

Вызов API, ожидающий документ JSON, позволяет использование многих типов данных, чтобы описывать документ. В зависимости от реализации X DevAPI и языка может использоваться любой из следующих типов данных:
String
Native JSON
Эквивалентный синтаксис JSON
DbDoc
Generated Doc Classes
Все реализации X DevAPI позволяют выражать документ специальным типом DbDoc и как последовательность.
Синтаксис для этой функции в EBNF:
Document ::= JSONDocument | JSONEquivalentDocument | DbDoc | GeneratedDocumentClasses
Рис. 11.39. Document
Синтаксис для этой функции в EBNF:
JSONExpression ::= JSONDocumentExpression | '[' Expression ( ',' Expression )* ']'
Рис. 11.40. JSONExpression
Синтаксис для этой функции в EBNF:
JSONDocumentExpression
::= '{' StringLiteral ':' JSONExpression (',' StringLiteral ':' JSONExpression)* '}'
Рис. 11.41. JSONDocumentExpression
Синтаксис для этой функции в EBNF:
FunctionName ::= StringLiteral | StringLiteral '.' StringLiteral
Рис. 11.42. FunctionName
Синтаксис для этой функции в EBNF:
DocumentOrJSON
::= Document | 'expr("' JSONDocumentExpression '")'
Рис. 11.43. DocumentOrJSON

Синтаксис для этой функции в EBNF:
TableField ::= ( StringLiteral '.' )? ( StringLiteral '.' )? StringLiteral ( '@' DocPath )?
Рис. 11.44. TableField
Синтаксис для этой функции в EBNF:
TableFields ::= ( '[' TableField ( ',' TableField )* ']' )
Рис. 11.45. TableFields