Search in sources :

Example 1 with Filter

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());
        }
    };
}
Also used : Datastore(dev.morphia.Datastore) Filter(dev.morphia.query.experimental.filters.Filter) DocumentWriter(dev.morphia.mapping.codec.writer.DocumentWriter) OperationTarget(dev.morphia.query.OperationTarget) Document(org.bson.Document)

Example 2 with Filter

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;
}
Also used : EncoderContext(org.bson.codecs.EncoderContext) Filter(dev.morphia.query.experimental.filters.Filter) NearFilter(dev.morphia.query.experimental.filters.NearFilter) DocumentWriter(dev.morphia.mapping.codec.writer.DocumentWriter) Document(org.bson.Document)

Example 3 with Filter

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);
                }
            });
        }
    });
}
Also used : Filter(dev.morphia.query.experimental.filters.Filter)

Example 4 with Filter

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());
    });
}
Also used : Filter(dev.morphia.query.experimental.filters.Filter)

Aggregations

Filter (dev.morphia.query.experimental.filters.Filter)4 DocumentWriter (dev.morphia.mapping.codec.writer.DocumentWriter)2 Document (org.bson.Document)2 Datastore (dev.morphia.Datastore)1 OperationTarget (dev.morphia.query.OperationTarget)1 NearFilter (dev.morphia.query.experimental.filters.NearFilter)1 EncoderContext (org.bson.codecs.EncoderContext)1