¿Hay alguna manera de simplemente recuperar la cadena de consulta que hace el controlador Java de MongoDB? Por ejemplo:
filter = eq("field","value"); FindIterable<BasicDBObject> find = collection.find(filter).projection(fields(include("field"), excludeId()));
Al iterar, esto debería invocar la consulta:
db.collection.find({"field":"value"},{"field":1, "_id":0})
que se dividirá en lotes, el primero de los cuales será de 101 elementos y los siguientes de un máximo de 16 MB (pero esto realmente no me importa. Solo necesito la consulta inicial). ¿Hay alguna forma de recuperar esta cadena de FindIterable u otros objetos del controlador java mongodb?
Leí en otra parte sobre personas que sugerían hacerlo desde el registro. Necesito la cadena de consulta en tiempo de ejecución porque tengo que usarla.
Puede probar esto con Java Driver v4.2 y MongoDB v4.2.8. Puede obtener el filtro y la proyección de Bson
como valores de cadena JSON.
MongoCollection<Document> coll = client.getDatabase("test").getCollection("books"); Bson filter = eq("author", "Mark Twain"); String filterJson = filter.toBsonDocument(BsonDocument.class, Bson.DEFAULT_CODEC_REGISTRY).toJson(); System.out.println(filterJson); // {"author": "Mark Twain"} Bson projectn = fields(include("title"), excludeId()); String projectJson = projectn.toBsonDocument(Document.class, Bson.DEFAULT_CODEC_REGISTRY).toJson(); System.out.println(projectJson); // {"title": 1, "_id": 0} coll.find(filter).projection(projectn);