public class MongoDBRepositoryQueryBuilder extends MongoDBAbstractQueryBuilder
Expression
.MongoDBAbstractQueryBuilder.FieldInfo
Modifier and Type | Field and Description |
---|---|
protected List<String> |
documentTypes |
boolean |
hasFulltext |
protected String |
idKey |
protected static Pattern |
NON_CANON_INDEX |
protected org.bson.Document |
orderBy |
protected OrderByClause |
orderByClause |
protected ExpressionEvaluator.PathResolver |
pathResolver |
protected org.bson.Document |
projection |
protected Map<String,String> |
propertyKeys |
protected SchemaManager |
schemaManager |
protected SelectClause |
selectClause |
boolean |
sortOnFulltextScore |
converter, DATE_CAST, elemMatchPrefix, expression, LIKE_ANCHORED_PROP, likeAnchored, LONG_ONE, LONG_ZERO, MINUS_ONE, ONE, query, SLASH_WILDCARD_SLASH
Constructor and Description |
---|
MongoDBRepositoryQueryBuilder(MongoDBRepository repository,
Expression expression,
SelectClause selectClause,
OrderByClause orderByClause,
ExpressionEvaluator.PathResolver pathResolver,
boolean fulltextSearchDisabled) |
Modifier and Type | Method and Description |
---|---|
static String |
canonicalXPath(String xpath)
Canonicalizes a Nuxeo-xpath.
|
protected List<String> |
getDocumentTypes() |
protected Set<String> |
getMixinDocumentTypes(String mixin) |
static String |
getMongoDBFulltextQuery(String query) |
org.bson.Document |
getOrderBy() |
org.bson.Document |
getProjection() |
boolean |
hasProjectionWildcard() |
protected boolean |
isMixinTypes(MongoDBAbstractQueryBuilder.FieldInfo fieldInfo) |
protected boolean |
isNeverPerInstanceMixin(String mixin) |
protected MongoDBAbstractQueryBuilder.FieldInfo |
parseACP(String prop,
String[] parts) |
protected static String |
translateFulltext(FulltextQueryAnalyzer.FulltextQuery ft,
boolean and)
Transforms the NXQL fulltext syntax into MongoDB syntax.
|
protected static void |
translateFulltext(FulltextQueryAnalyzer.FulltextQuery ft,
List<String> buf,
boolean and) |
void |
walk() |
protected org.bson.Document |
walkAncestorId(Operator op,
Operand rvalue) |
protected org.bson.Document |
walkEcmFulltext(String name,
Operator op,
Operand rvalue) |
protected org.bson.Document |
walkEcmPath(Operator op,
Operand rvalue) |
org.bson.Document |
walkEq(Operand lvalue,
Operand rvalue) |
org.bson.Document |
walkExpression(Expression expr) |
org.bson.Document |
walkIn(Operand lvalue,
Operand rvalue,
boolean positive) |
protected org.bson.Document |
walkIsTrashed(Operator op,
Operand rvalue) |
protected org.bson.Document |
walkIsTrashed(Reference ref,
Operator op,
Operand initialRvalue,
Literal deletedRvalue) |
org.bson.Document |
walkMixinTypes(List<String> mixins,
boolean include)
Matches the mixin types against a list of values.
|
org.bson.Document |
walkNotEq(Operand lvalue,
Operand rvalue) |
protected void |
walkOrderBy() |
protected void |
walkProjection() |
protected MongoDBAbstractQueryBuilder.FieldInfo |
walkReference(String name)
Walks a reference, and returns field info about it.
|
org.bson.Document |
walkStartsWith(Operand lvalue,
Operand rvalue) |
protected org.bson.Document |
walkStartsWithNonPath(Operand lvalue,
String path) |
protected org.bson.Document |
walkStartsWithPath(String path) |
checkBoolean, checkDateLiteralForCast, checkDateLiteralForCast, getQuery, newDocumentWithField, pushDownNot, stripElemMatchPrefix, walkAndOr, walkAndOr, walkAndOrMultiExpression, walkBetween, walkBooleanLiteral, walkDateLiteral, walkDoubleLiteral, walkFunction, walkGt, walkGtEq, walkIntegerLiteral, walkIsNotNull, walkIsNull, walkLike, walkLiteral, walkLiteralList, walkLt, walkLtEq, walkNot, walkOperand, walkOperandList, walkReference, walkReference, walkStringLiteral
protected final SchemaManager schemaManager
protected List<String> documentTypes
protected final SelectClause selectClause
protected final OrderByClause orderByClause
protected final ExpressionEvaluator.PathResolver pathResolver
public boolean hasFulltext
public boolean sortOnFulltextScore
protected org.bson.Document orderBy
protected org.bson.Document projection
protected Map<String,String> propertyKeys
protected static final Pattern NON_CANON_INDEX
public MongoDBRepositoryQueryBuilder(MongoDBRepository repository, Expression expression, SelectClause selectClause, OrderByClause orderByClause, ExpressionEvaluator.PathResolver pathResolver, boolean fulltextSearchDisabled)
public void walk()
walk
in class MongoDBAbstractQueryBuilder
public org.bson.Document getOrderBy()
public org.bson.Document getProjection()
public boolean hasProjectionWildcard()
protected void walkOrderBy()
protected void walkProjection()
public org.bson.Document walkExpression(Expression expr)
walkExpression
in class MongoDBAbstractQueryBuilder
protected org.bson.Document walkEcmPath(Operator op, Operand rvalue)
protected org.bson.Document walkAncestorId(Operator op, Operand rvalue)
protected org.bson.Document walkEcmFulltext(String name, Operator op, Operand rvalue)
protected org.bson.Document walkIsTrashed(Operator op, Operand rvalue)
protected org.bson.Document walkIsTrashed(Reference ref, Operator op, Operand initialRvalue, Literal deletedRvalue)
public static String getMongoDBFulltextQuery(String query)
protected static String translateFulltext(FulltextQueryAnalyzer.FulltextQuery ft, boolean and)
The MongoDB fulltext query syntax is badly documented, but is actually the following:
The matching algorithm is (excluding stemming and stop words):
protected static void translateFulltext(FulltextQueryAnalyzer.FulltextQuery ft, List<String> buf, boolean and)
public org.bson.Document walkEq(Operand lvalue, Operand rvalue)
walkEq
in class MongoDBAbstractQueryBuilder
public org.bson.Document walkNotEq(Operand lvalue, Operand rvalue)
walkNotEq
in class MongoDBAbstractQueryBuilder
public org.bson.Document walkIn(Operand lvalue, Operand rvalue, boolean positive)
walkIn
in class MongoDBAbstractQueryBuilder
public org.bson.Document walkStartsWith(Operand lvalue, Operand rvalue)
protected org.bson.Document walkStartsWithPath(String path)
protected org.bson.Document walkStartsWithNonPath(Operand lvalue, String path)
public static String canonicalXPath(String xpath)
Replaces a/foo[123]/b
with a/123/b
A star or a star followed by digits can be used instead of just the digits as well.
xpath
- the xpathprotected MongoDBAbstractQueryBuilder.FieldInfo walkReference(String name)
MongoDBAbstractQueryBuilder
walkReference
in class MongoDBAbstractQueryBuilder
protected MongoDBAbstractQueryBuilder.FieldInfo parseACP(String prop, String[] parts)
protected boolean isMixinTypes(MongoDBAbstractQueryBuilder.FieldInfo fieldInfo)
protected Set<String> getMixinDocumentTypes(String mixin)
protected List<String> getDocumentTypes()
protected boolean isNeverPerInstanceMixin(String mixin)
public org.bson.Document walkMixinTypes(List<String> mixins, boolean include)
Used for:
ecm:mixinTypes IN ('Foo', 'Bar')
{ "$or" : [ { "ecm:primaryType" : { "$in" : [ ... types with Foo or Bar ...]}} , { "ecm:mixinTypes" : { "$in" : [ "Foo" , "Bar]}}]}ecm:mixinTypes NOT IN ('Foo', 'Bar')
{ "$and" : [ { "ecm:primaryType" : { "$in" : [ ... types without Foo nor Bar ...]}} , { "ecm:mixinTypes" : { "$nin" : [ "Foo" , "Bar]}}]}
Copyright © 2019 Nuxeo. All rights reserved.