@Override @SuppressWarnings("deprecation") public long count(final ClientSession clientSession, final Bson filter) { return count(clientSession, filter, new CountOptions()); }
@Override public CountOptions convert(Environment env, TraceInfo trace, Memory arg) throws Throwable { if (arg.isNull()) return null; ArrayMemory arr = arg.toValue(ArrayMemory.class); CountOptions options = new CountOptions(); if (arr.containsKey("skip")) options.skip(arg.valueOfIndex("skip").toInteger()); if (arr.containsKey("limit")) options.limit(arg.valueOfIndex("limit").toInteger()); if (arr.containsKey("maxTime")) { options.maxTime(WrapTimer.parsePeriod(arg.valueOfIndex("maxTime").toString()), TimeUnit.MILLISECONDS); } return options; }
CountOperation count(final Bson filter, final CountOptions options, final CountStrategy countStrategy) { CountOperation operation = new CountOperation(namespace, countStrategy) .filter(toBsonDocument(filter)) .skip(options.getSkip()) .limit(options.getLimit()) .maxTime(options.getMaxTime(MILLISECONDS), MILLISECONDS) .collation(options.getCollation()); if (options.getHint() != null) { operation.hint(toBsonDocument(options.getHint())); } else if (options.getHintString() != null) { operation.hint(new BsonString(options.getHintString())); } return operation; }
public static CountOptions fromEstimatedDocumentCountOptions(final EstimatedDocumentCountOptions options) { return new CountOptions().maxTime(options.getMaxTime(TimeUnit.MILLISECONDS), TimeUnit.MILLISECONDS); }
@Override public Boolean doInCollection(MongoCollection<Document> collection) throws MongoException, DataAccessException { return doCount(collection.getNamespace().getCollectionName(), mappedQuery, new CountOptions().limit(1).collation(collation)) > 0; } }
@Override public Memory unconvert(Environment env, TraceInfo trace, CountOptions arg) throws Throwable { if (arg == null) return Memory.NULL; ArrayMemory options = ArrayMemory.createHashed(12); options.put("skip", arg.getSkip()); options.put("limit", arg.getLimit()); options.put("maxTime", arg.getMaxTime(TimeUnit.MILLISECONDS)); return options; }
@Test public void testQuerySkipLimitSimpleQuery() throws Exception { assertThat(collection.countDocuments(json("a: 1"), new CountOptions().skip(3))).isEqualTo(0); for (int i = 0; i < 10; i++) { collection.insertOne(json("a: 1")); } assertThat(collection.countDocuments(json("a: 1"), new CountOptions().skip(3))).isEqualTo(7); assertThat(collection.countDocuments(json("a: 1"), new CountOptions().skip(3).limit(5))).isEqualTo(5); assertThat(collection.countDocuments(json("a: 1"), new CountOptions().skip(15).limit(5))).isEqualTo(0); }
@Override public boolean isQueueEmpty() { return (int) collRefs.count(eq(IMongoSerializer.FIELD_STAGE, Stage.QUEUED.name()), new CountOptions().limit(1)) == 0; }
@Test public void testQuerySkipLimitEmptyQuery() throws Exception { assertThat(collection.countDocuments(json(""), new CountOptions().skip(3))).isEqualTo(0); for (int i = 0; i < 10; i++) { collection.insertOne(json("")); } assertThat(collection.countDocuments(json(""), new CountOptions().skip(3))).isEqualTo(7); assertThat(collection.countDocuments(json(""), new CountOptions().skip(15))).isEqualTo(0); assertThat(collection.countDocuments(json(""), new CountOptions().skip(3).limit(5))).isEqualTo(5); }
public static CountOptions fromEstimatedDocumentCountOptions(final EstimatedDocumentCountOptions options) { return new CountOptions().maxTime(options.getMaxTime(TimeUnit.MILLISECONDS), TimeUnit.MILLISECONDS); }
@Test public void testQueryLimitSimpleQuery() throws Exception { for (int i = 0; i < 5; i++) { collection.insertOne(json("a: 1")); } assertThat(collection.countDocuments(json("a: 1"), new CountOptions().limit(1))).isEqualTo(1); assertThat(collection.countDocuments(json("a: 1"), new CountOptions().limit(-1))).isEqualTo(5); assertThat(collection.countDocuments(json("a: 1"))).isEqualTo(5); }
@Override public Boolean doInCollection(MongoCollection<Document> collection) throws MongoException, DataAccessException { return doCount(collection.getNamespace().getCollectionName(), mappedQuery, new CountOptions().limit(1).collation(collation)) > 0; } }
@Override @SuppressWarnings("deprecation") public long count(final Bson filter) { return count(filter, new CountOptions()); }
@Override public Source<Long, NotUsed> count(final Query query) { checkNotNull(query, "query"); final BsonDocument queryFilter = getMongoFilter(query); log.debug("count with query filter <{}>.", queryFilter); final Bson filter = and(filterNotDeleted(), queryFilter); final CountOptions countOptions = new CountOptions() .skip(query.getSkip()) .limit(query.getLimit()) .maxTime(maxQueryTime.getSeconds(), TimeUnit.SECONDS); return Source.fromPublisher(collection.count(filter, countOptions)) .mapError(handleMongoExecutionTimeExceededException()) .log("count"); }
@Test @SuppressWarnings("deprecation") public void testCountCommandWithSkipAndLimit() { collection.insertOne(json("x: 1")); collection.insertOne(json("x: 1")); collection.insertOne(json("x: 2")); collection.insertOne(json("x: 1")); collection.insertOne(json("x: 2")); collection.insertOne(json("x: 1")); assertThat(collection.count(json("x: 1"), new CountOptions().skip(4).limit(2))).isEqualTo(0); assertThat(collection.count(json("x: 1"), new CountOptions().limit(3))).isEqualTo(3); assertThat(collection.count(json("x: 1"), new CountOptions().limit(10))).isEqualTo(4); assertThat(collection.count(json("x: 1"), new CountOptions().skip(1))).isEqualTo(3); }
public long size(final long maxTime, final TimeUnit timeUnit) { return collection().count(new BsonDocument(), new CountOptions().maxTime(maxTime, timeUnit)); }
@Test public void testQueryLimitEmptyQuery() throws Exception { for (int i = 0; i < 5; i++) { collection.insertOne(json("")); } assertThat(collection.countDocuments(json(""), new CountOptions().limit(1))).isEqualTo(1); assertThat(collection.countDocuments(json(""), new CountOptions().limit(-1))).isEqualTo(5); assertThat(collection.countDocuments(json(""))).isEqualTo(5); }
CountOperation count(final Bson filter, final CountOptions options, final CountStrategy countStrategy) { CountOperation operation = new CountOperation(namespace, countStrategy) .filter(toBsonDocument(filter)) .skip(options.getSkip()) .limit(options.getLimit()) .maxTime(options.getMaxTime(MILLISECONDS), MILLISECONDS) .collation(options.getCollation()); if (options.getHint() != null) { operation.hint(toBsonDocument(options.getHint())); } else if (options.getHintString() != null) { operation.hint(new BsonString(options.getHintString())); } return operation; }
@Override public long countDocuments(final Bson filter) { return countDocuments(filter, new CountOptions()); }
@Override public Source<Long, NotUsed> count(final Query query) { checkNotNull(query, "query"); final BsonDocument queryFilter = getMongoFilter(query); log.debug("count with query filter <{}>.", queryFilter); final Bson filter = and(filterNotDeleted(), queryFilter); final CountOptions countOptions = new CountOptions() .skip(query.getSkip()) .limit(query.getLimit()) .maxTime(maxQueryTime.getSeconds(), TimeUnit.SECONDS); return Source.fromPublisher(collection.count(filter, countOptions)) .mapError(handleMongoExecutionTimeExceededException()) .log("count"); }