@Override public DBObject getQueryObject() { return mq.getQueryObject(); }
public DBObject getQueryObject() { return q_.getQueryObject(); }
@Override public AggregationPipeline match(final Query query) { stages.add(new BasicDBObject("$match", query.getQueryObject())); return this; }
DB db = mongoTemplate.getDb(); DBCollection collection = db.getCollection(collectionName); DBObject query = upsertQuery.getQueryObject(); DBObject update = new BasicDBObject("$set", JSON.parse(jsonStr)); collection.update(query, update, true, false);
public Map<String, Long> cloud(String field) { field = MorphiaPlugin.mongoColName(c_, field); String map = String.format("function() {if (!this.%1$s) return; for (index in this.%1$s) emit(this.%1$s[index], 1);}", field); String reduce = "function(previous, current) {var count = 0; for (index in current) count += current[index]; return count;}"; MapReduceCommand cmd = new MapReduceCommand(col(), map, reduce, null, MapReduceCommand.OutputType.INLINE, q_.getQueryObject()); MapReduceOutput out = col().mapReduce(cmd); Map<String, Long> m = new HashMap<String, Long>(); for (Iterator<DBObject> itr = out.results().iterator(); itr.hasNext(); ) { DBObject dbo = itr.next(); m.put((String) dbo.get("_id"), ((Double) dbo.get("value")).longValue()); } return m; }
@SuppressWarnings("unchecked") public <T> List<T> distinct(MorphiaQuery q, String field) { return collection().distinct(field, q.morphiaQuery().getQueryObject()); }
/** * * @param groupKeys * could be either "f1Andf2.." or "f1 f2" or "f1,f2" * @return */ public List<BasicDBObject> group(String groupKeys, DBObject initial, String reduce, String finalize) { DBObject key = new BasicDBObject(); if (!S.empty(groupKeys)) { if (groupKeys.startsWith("by")) groupKeys = groupKeys.substring(2); String[] sa = groupKeys.split("(And|[\\s,;]+)"); for (String s : sa) { key.put(MorphiaPlugin.mongoColName(c_, s), true); } } return (List<BasicDBObject>) ds().getCollection(c_).group(key, q_.getQueryObject(), initial, reduce, finalize); }
private List<BasicDBObject> group(String groupKeys, DBObject initial, String reduce, String finalize) { DBObject key = new BasicDBObject(); if (!S.empty(groupKeys)) { String[] sa = MorphiaService.splitGroupKeys(groupKeys); for (String s : sa) { key.put(s, true); } } return (List<BasicDBObject>) ds.getCollection(modelType).group(key, mq.getQueryObject(), initial, reduce, finalize); }
@Override @Deprecated public <T> MapreduceResults<T> mapReduce(final MapreduceType type, final Query query, final String map, final String reduce, final String finalize, final Map<String, Object> scopeFields, final Class<T> outputType) { final DBCollection dbColl = query.getCollection(); final String outColl = mapper.getCollectionName(outputType); final MapReduceCommand cmd = new MapReduceCommand(dbColl, map, reduce, outColl, type.toOutputType(), query.getQueryObject()); if (query.getLimit() > 0) { cmd.setLimit(query.getLimit()); } if (query.getSortObject() != null) { cmd.setSort(query.getSortObject()); } if (finalize != null && finalize.length() != 0) { cmd.setFinalize(finalize); } if (scopeFields != null && !scopeFields.isEmpty()) { cmd.setScope(scopeFields); } return mapReduce(type, query, outputType, cmd); }
@Override public <T> WriteResult delete(final Query<T> query, final DeleteOptions options) { DBCollection dbColl = query.getCollection(); // TODO remove this after testing. if (dbColl == null) { dbColl = getCollection(query.getEntityClass()); } if (query.getSortObject() != null || query.getOffset() != 0 || query.getLimit() > 0) { throw new QueryException("Delete does not allow sort/offset/limit query options."); } return dbColl.remove(query.getQueryObject(), enforceWriteConcern(options, query.getEntityClass()).getOptions()); }
@Override @SuppressWarnings("deprecation") public AggregationPipeline geoNear(final GeoNear geoNear) { DBObject geo = new BasicDBObject(); GeometryShapeConverter.PointConverter pointConverter = new GeometryShapeConverter.PointConverter(); pointConverter.setMapper(mapper); putIfNull(geo, "near", geoNear.getNearAsDBObject(pointConverter)); putIfNull(geo, "distanceField", geoNear.getDistanceField()); putIfNull(geo, "limit", geoNear.getLimit()); putIfNull(geo, "num", geoNear.getMaxDocuments()); putIfNull(geo, "maxDistance", geoNear.getMaxDistance()); if (geoNear.getQuery() != null) { geo.put("query", geoNear.getQuery().getQueryObject()); } putIfNull(geo, "spherical", geoNear.getSpherical()); putIfNull(geo, "distanceMultiplier", geoNear.getDistanceMultiplier()); putIfNull(geo, "includeLocs", geoNear.getIncludeLocations()); putIfNull(geo, "uniqueDocs", geoNear.getUniqueDocuments()); stages.add(new BasicDBObject("$geoNear", geo)); return this; }
@Override public <T> UpdateResults update(final Query<T> query, final UpdateOperations<T> operations, final UpdateOptions options) { DBCollection dbColl = query.getCollection(); // TODO remove this after testing. if (dbColl == null) { dbColl = getCollection(query.getEntityClass()); } final MappedClass mc = getMapper().getMappedClass(query.getEntityClass()); final List<MappedField> fields = mc.getFieldsAnnotatedWith(Version.class); DBObject queryObject = query.getQueryObject(); if (operations.isIsolated()) { queryObject.put("$isolated", true); } if (!fields.isEmpty()) { operations.inc(fields.get(0).getNameToStore(), 1); } final BasicDBObject update = (BasicDBObject) ((UpdateOpsImpl) operations).getOps(); if (LOG.isTraceEnabled()) { LOG.trace(format("Executing update(%s) for query: %s, ops: %s, multi: %s, upsert: %s", dbColl.getName(), queryObject, update, options.isMulti(), options.isUpsert())); } return new UpdateResults(dbColl.update(queryObject, update, enforceWriteConcern(options, query.getEntityClass()) .getOptions())); }
DBObject queryObject = query.getQueryObject();
@Override public <T> T findAndModify(final Query<T> query, final UpdateOperations<T> operations, final FindAndModifyOptions options) { DBCollection dbColl = query.getCollection(); // TODO remove this after testing. if (dbColl == null) { dbColl = getCollection(query.getEntityClass()); } if (LOG.isTraceEnabled()) { LOG.info("Executing findAndModify(" + dbColl.getName() + ") with update "); } updateForVersioning(query, operations); DBObject res = dbColl.findAndModify(query.getQueryObject(), options.copy() .sort(query.getSortObject()) .projection(query.getFieldsObject()) .update(((UpdateOpsImpl<T>) operations).getOps()) .getOptions()); return res == null ? null : mapper.fromDBObject(this, query.getEntityClass(), res, createCache()); }
@Override public <T> T findAndDelete(final Query<T> query, final FindAndModifyOptions options) { DBCollection dbColl = query.getCollection(); if (dbColl == null) { dbColl = getCollection(query.getEntityClass()); } if (LOG.isTraceEnabled()) { LOG.trace("Executing findAndModify(" + dbColl.getName() + ") with delete ..."); } FindAndModifyOptions copy = enforceWriteConcern(options, query.getEntityClass()) .copy() .projection(query.getFieldsObject()) .sort(query.getSortObject()) .returnNew(false) .upsert(false) .remove(true); final DBObject result = dbColl.findAndModify(query.getQueryObject(), copy.getOptions()); return result == null ? null : mapper.fromDBObject(this, query.getEntityClass(), result, createCache()); }
@SuppressWarnings("deprecation") MapReduceCommand toCommand(final Mapper mapper) { if (query.getOffset() != 0 || query.getFieldsObject() != null) { throw new QueryException("mapReduce does not allow the offset/retrievedFields query "); } final DBCollection dbColl = inputCollection != null ? getQuery().getCollection().getDB().getCollection(inputCollection) : query.getCollection(); final String target = outputCollection != null ? outputCollection : mapper.getMappedClass(resultType).getCollectionName(); final MapReduceCommand command = new MapReduceCommand(dbColl, map, reduce, target, outputType, query.getQueryObject()); command.setBypassDocumentValidation(bypassDocumentValidation); command.setCollation(collation); command.setFinalize(finalize); command.setJsMode(jsMode); command.setLimit(limit); command.setMaxTime(maxTimeMS, TimeUnit.MILLISECONDS); command.setOutputDB(outputDB); command.setReadPreference(readPreference); command.setScope(scope); command.setSort(query.getSortObject()); command.setVerbose(verbose); return command; } }
baseCommand.getOutputTarget(), outType, query.getQueryObject()); cmd.setFinalize(baseCommand.getFinalize()); cmd.setScope(baseCommand.getScope());