使用Java MongoDb驱动程序进行Bson漂亮打印

ric*_*din 2 java mongodb bson mongo-java mongo-java-driver

我正在使用Java MongoDB驱动程序3.3版使用Mongo Aggregation Framework。我有一个聚集管道,这只是类型的集合List<Bson>。我试图找到一种方法来漂亮地打印管道的每个阶段。

toString在每个元素上调用方法是不够的,因为每个阶段都是Bson接口的简单实现的实例,即SimplePipelineStage。这个愚蠢的类没有任何toString方法的覆盖。

使用mongo java驱动程序Aggregates类的工厂方法创建管道,如下所示:

Aggregates.match(/* ... */)
Aggregates.project(/* ... */)
// And so on...
Run Code Online (Sandbox Code Playgroud)

Javadoc可以在这里找到。

我如何漂亮地打印此类对象?我肯定知道类型BasicDbObject具有智能toString实现,但是我找不到找到从转换Bson为的方法BasicDbObject

非常感谢。

ric*_*din 5

仔细搜索一下,我找到了一种漂亮打印Bson实例的解决方案。诀窍是将其转换为的实例BsonDocument,该实例具有toString方法的实现,该方法返回相应JSON的字符串表示形式。

Bson bson = Filters.gt("a", 10);
BsonDocument bsonDocument = bson.toBsonDocument(BsonDocument.class, MongoClient.DEFAULT_CODEC_REGISTRY);
System.out.println(bsonDocument);
Run Code Online (Sandbox Code Playgroud)

原始链接如下:将Bson对象转换为BsonDocument