use of dev.morphia.query.experimental.filters.Filter in project morphia by mongodb.
the class PullOperator method toTarget.
@Override
public OperationTarget toTarget(PathTarget pathTarget) {
return new OperationTarget(pathTarget, value()) {
@Override
public Object encode(Datastore datastore) {
DocumentWriter writer = new DocumentWriter(datastore.getMapper());
document(writer, () -> {
((Filter) getValue()).encode(datastore, writer, EncoderContext.builder().build());
});
return new Document(field(), writer.getDocument());
}
};
}
use of dev.morphia.query.experimental.filters.Filter in project morphia by mongodb.
the class MorphiaQuery method getQueryDocument.
Document getQueryDocument() {
DocumentWriter writer = new DocumentWriter(mapper, seedQuery);
document(writer, () -> {
EncoderContext context = EncoderContext.builder().build();
for (Filter filter : filters) {
filter.encode(datastore, writer, context);
}
});
Document query = writer.getDocument();
if (mapper.isMappable(getEntityClass())) {
mapper.updateQueryWithDiscriminators(mapper.getEntityModel(getEntityClass()), query);
}
return query;
}
use of dev.morphia.query.experimental.filters.Filter in project morphia by mongodb.
the class GraphLookupCodec method encodeStage.
@Override
protected void encodeStage(BsonWriter writer, GraphLookup value, EncoderContext encoderContext) {
document(writer, () -> {
if (value.getFrom() != null) {
value(writer, "from", value.getFrom());
} else {
writer.writeString("from", getDatastore().getMapper().getEntityModel(value.getFromType()).getCollectionName());
}
expression(getDatastore(), writer, "startWith", value.getStartWith(), encoderContext);
value(writer, "connectFromField", value.getConnectFromField());
value(writer, "connectToField", value.getConnectToField());
value(writer, "as", value.getAs());
value(writer, "maxDepth", value.getMaxDepth());
value(writer, "depthField", value.getDepthField());
Filter[] restriction = value.getRestriction();
if (restriction != null) {
document(writer, "restrictSearchWithMatch", () -> {
for (Filter filter : restriction) {
filter.encode(getDatastore(), writer, encoderContext);
}
});
}
});
}
use of dev.morphia.query.experimental.filters.Filter in project morphia by mongodb.
the class GeoNearCodec method encodeStage.
@Override
protected void encodeStage(BsonWriter writer, GeoNear value, EncoderContext encoderContext) {
document(writer, () -> {
value(getDatastore(), writer, "near", value.getPoint(), encoderContext);
value(getDatastore(), writer, "near", value.getCoordinates(), encoderContext);
value(writer, "key", value.getKey());
value(writer, "distanceField", value.getDistanceField());
value(writer, "spherical", value.getSpherical());
value(getDatastore(), writer, "maxDistance", value.getMaxDistance(), encoderContext);
value(getDatastore(), writer, "minDistance", value.getMinDistance(), encoderContext);
Filter[] filters = value.getFilters();
if (filters != null) {
document(writer, "query", () -> {
for (Filter filter : filters) {
filter.encode(getDatastore(), writer, encoderContext);
}
});
}
value(getDatastore(), writer, "distanceMultiplier", value.getDistanceMultiplier(), encoderContext);
value(writer, "includeLocs", value.getIncludeLocs());
});
}
Aggregations