Эта глава предоставляет визуальный справочник по объектам и функциям, доступным в 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