use of org.bson.BsonString in project mongo-java-driver by mongodb.
the class UnifiedCrudHelper method executeDistinct.
OperationResult executeDistinct(final BsonDocument operation) {
MongoCollection<BsonDocument> collection = entities.getCollection(operation.getString("object").getValue());
BsonDocument arguments = operation.getDocument("arguments");
ClientSession session = getSession(arguments);
BsonString fieldName = arguments.getString("fieldName");
DistinctIterable<BsonValue> iterable = session == null ? collection.distinct(fieldName.getValue(), BsonValue.class) : collection.distinct(session, fieldName.getValue(), BsonValue.class);
for (Map.Entry<String, BsonValue> cur : arguments.entrySet()) {
switch(cur.getKey()) {
case "fieldName":
case "session":
break;
case "filter":
iterable.filter(cur.getValue().asDocument());
break;
default:
throw new UnsupportedOperationException("Unsupported argument: " + cur.getKey());
}
}
return resultOf(() -> new BsonArray(iterable.into(new ArrayList<>())));
}
use of org.bson.BsonString in project mongo-java-driver by mongodb.
the class WriteProtocol method getBaseCommandDocument.
protected BsonDocument getBaseCommandDocument(final String commandName) {
BsonDocument baseCommandDocument = new BsonDocument(commandName, new BsonString(getNamespace().getCollectionName())).append("ordered", BsonBoolean.valueOf(isOrdered()));
baseCommandDocument.append("writeConcern", WriteConcern.UNACKNOWLEDGED.asDocument());
return baseCommandDocument;
}
use of org.bson.BsonString in project mongo-java-driver by mongodb.
the class AggregateOperationImpl method getCommand.
BsonDocument getCommand(final SessionContext sessionContext, final int maxWireVersion) {
BsonDocument commandDocument = new BsonDocument("aggregate", aggregateTarget.create());
appendReadConcernToCommand(sessionContext, maxWireVersion, commandDocument);
commandDocument.put("pipeline", pipelineCreator.create());
if (maxTimeMS > 0) {
commandDocument.put("maxTimeMS", maxTimeMS > Integer.MAX_VALUE ? new BsonInt64(maxTimeMS) : new BsonInt32((int) maxTimeMS));
}
BsonDocument cursor = new BsonDocument();
if (batchSize != null) {
cursor.put("batchSize", new BsonInt32(batchSize));
}
commandDocument.put(CURSOR, cursor);
if (allowDiskUse != null) {
commandDocument.put("allowDiskUse", BsonBoolean.valueOf(allowDiskUse));
}
if (collation != null) {
commandDocument.put("collation", collation.asDocument());
}
if (comment != null) {
commandDocument.put("comment", new BsonString(comment));
}
if (hint != null) {
commandDocument.put("hint", hint);
}
if (variables != null) {
commandDocument.put("let", variables);
}
return commandDocument;
}
use of org.bson.BsonString in project mongo-java-driver by mongodb.
the class AbstractRetryableReadsTest method setUp.
@Before
public void setUp() {
assumeFalse(skipTest);
assumeTrue("Skipping test: " + definition.getString("skipReason", new BsonString("")).getValue(), !definition.containsKey("skipReason"));
assumeFalse("Skipping count tests", filename.startsWith("count.") || filename.startsWith("count-"));
assumeFalse("Skipping list index names tests", filename.startsWith("listIndexNames"));
collectionHelper = new CollectionHelper<Document>(new DocumentCodec(), new MongoNamespace(databaseName, collectionName));
final BsonDocument clientOptions = definition.getDocument("clientOptions", new BsonDocument());
ConnectionString connectionString = getConnectionString();
useMultipleMongoses = definition.getBoolean("useMultipleMongoses", BsonBoolean.FALSE).getValue();
if (useMultipleMongoses) {
assumeTrue(isSharded());
connectionString = getMultiMongosConnectionString();
assumeTrue("The system property org.mongodb.test.multi.mongos.uri is not set.", connectionString != null);
}
MongoClientSettings settings = getMongoClientSettingsBuilder().applyConnectionString(connectionString).addCommandListener(commandListener).applyToSocketSettings(new Block<SocketSettings.Builder>() {
@Override
public void apply(final SocketSettings.Builder builder) {
builder.readTimeout(5, TimeUnit.SECONDS);
}
}).applyToServerSettings(new Block<ServerSettings.Builder>() {
@Override
public void apply(final ServerSettings.Builder builder) {
builder.heartbeatFrequency(5, TimeUnit.MILLISECONDS);
}
}).writeConcern(getWriteConcern(clientOptions)).readConcern(getReadConcern(clientOptions)).readPreference(getReadPreference(clientOptions)).retryWrites(clientOptions.getBoolean("retryWrites", BsonBoolean.FALSE).getValue()).retryReads(clientOptions.getBoolean("retryReads", BsonBoolean.TRUE).getValue()).build();
mongoClient = createMongoClient(settings);
if (data != null) {
List<BsonDocument> documents = new ArrayList<BsonDocument>();
for (BsonValue document : data) {
documents.add(document.asDocument());
}
collectionHelper.drop();
if (documents.size() > 0) {
collectionHelper.insertDocuments(documents);
}
}
MongoDatabase database = mongoClient.getDatabase(databaseName);
if (gridFSBucketName != null) {
setupGridFSBuckets(database);
commandListener.reset();
}
collection = database.getCollection(collectionName, BsonDocument.class);
helper = new JsonPoweredCrudTestHelper(description, database, collection, gridFSBucket, mongoClient);
if (definition.containsKey("failPoint")) {
collectionHelper.runAdminCommand(definition.getDocument("failPoint"));
}
}
use of org.bson.BsonString in project mongo-java-driver by mongodb.
the class AbstractUnifiedTest method setUp.
@Before
public void setUp() {
assumeFalse(skipTest);
assumeTrue("Skipping test: " + definition.getString("skipReason", new BsonString("")).getValue(), !definition.containsKey("skipReason"));
assumeFalse("Skipping test of count", filename.equals("count.json"));
collectionHelper = new CollectionHelper<Document>(new DocumentCodec(), new MongoNamespace(databaseName, collectionName));
collectionHelper.killAllSessions();
if (!isDataLakeTest()) {
collectionHelper.create(collectionName, new CreateCollectionOptions(), WriteConcern.MAJORITY);
}
if (!data.isEmpty()) {
List<BsonDocument> documents = new ArrayList<BsonDocument>();
for (BsonValue document : data) {
documents.add(document.asDocument());
}
collectionHelper.insertDocuments(documents, WriteConcern.MAJORITY);
}
if (definition.containsKey("failPoint")) {
collectionHelper.runAdminCommand(definition.getDocument("failPoint"));
}
final BsonDocument clientOptions = definition.getDocument("clientOptions", new BsonDocument());
connectionString = getConnectionString();
useMultipleMongoses = definition.getBoolean("useMultipleMongoses", BsonBoolean.FALSE).getValue();
if (useMultipleMongoses) {
assumeTrue(isSharded());
connectionString = getMultiMongosConnectionString();
assumeTrue("The system property org.mongodb.test.transaction.uri is not set.", connectionString != null);
}
MongoClientSettings.Builder builder = getMongoClientSettingsBuilder().applyConnectionString(connectionString).addCommandListener(commandListener).applyToClusterSettings(clusterSettingsBuilder -> {
if (clientOptions.containsKey("serverSelectionTimeoutMS")) {
clusterSettingsBuilder.serverSelectionTimeout(clientOptions.getNumber("serverSelectionTimeoutMS").longValue(), MILLISECONDS);
}
if (clientOptions.containsKey("directConnection")) {
setDirectConnection(clusterSettingsBuilder);
}
}).applyToSocketSettings(new Block<SocketSettings.Builder>() {
@Override
public void apply(final SocketSettings.Builder builder) {
builder.readTimeout(clientOptions.getInt32("socketTimeoutMS", new BsonInt32(toIntExact(SECONDS.toMillis(5)))).getValue(), MILLISECONDS);
if (clientOptions.containsKey("connectTimeoutMS")) {
builder.connectTimeout(clientOptions.getNumber("connectTimeoutMS").intValue(), MILLISECONDS);
}
}
}).writeConcern(getWriteConcern(clientOptions)).readConcern(getReadConcern(clientOptions)).readPreference(getReadPreference(clientOptions)).retryWrites(clientOptions.getBoolean("retryWrites", BsonBoolean.FALSE).getValue()).retryReads(false).applyToConnectionPoolSettings(poolSettingsBuilder -> {
poolSettingsBuilder.addConnectionPoolListener(connectionPoolListener);
if (clientOptions.containsKey("minPoolSize")) {
poolSettingsBuilder.minSize(clientOptions.getInt32("minPoolSize").getValue());
}
}).applyToServerSettings(new Block<ServerSettings.Builder>() {
@Override
public void apply(final ServerSettings.Builder builder) {
builder.heartbeatFrequency(50, MILLISECONDS);
builder.minHeartbeatFrequency(MIN_HEARTBEAT_FREQUENCY_MS, MILLISECONDS);
builder.addServerListener(serverListener);
}
});
if (clientOptions.containsKey("heartbeatFrequencyMS")) {
builder.applyToServerSettings(new Block<ServerSettings.Builder>() {
@Override
public void apply(final ServerSettings.Builder builder) {
builder.heartbeatFrequency(clientOptions.getInt32("heartbeatFrequencyMS").intValue(), MILLISECONDS);
}
});
}
if (clientOptions.containsKey("appname")) {
builder.applicationName(clientOptions.getString("appname").getValue());
}
if (clientOptions.containsKey("w")) {
if (clientOptions.isString("w")) {
builder.writeConcern(new WriteConcern(clientOptions.getString("w").getValue()));
} else if (clientOptions.isNumber("w")) {
builder.writeConcern(new WriteConcern(clientOptions.getNumber("w").intValue()));
}
}
StreamFactoryFactory streamFactoryFactory = getStreamFactoryFactory();
if (streamFactoryFactory != null) {
builder.streamFactoryFactory(streamFactoryFactory);
}
mongoClient = createMongoClient(builder.build());
database = mongoClient.getDatabase(databaseName);
if (useMultipleMongoses) {
// non-transactional distinct operation to avoid StaleDbVersion error
runDistinctOnEachNode();
}
helper = new JsonPoweredCrudTestHelper(description, database, database.getCollection(collectionName, BsonDocument.class), null, mongoClient);
sessionsMap = new HashMap<>();
lsidMap = new HashMap<>();
if (createSessions && serverVersionAtLeast(3, 6)) {
ClientSession sessionZero = createSession("session0");
ClientSession sessionOne = createSession("session1");
sessionsMap.put("session0", sessionZero);
sessionsMap.put("session1", sessionOne);
lsidMap.put("session0", sessionZero.getServerSession().getIdentifier());
lsidMap.put("session1", sessionOne.getServerSession().getIdentifier());
}
}
Aggregations