我正在使用Java MongoDB驱动程序3.3版使用Mongo Aggregation Framework.我有一个聚集管道,它仅仅是List< Bson>类型的集合.我试图找到一种方法来漂亮地打印管道的每个阶段.
在每个元素上调用toString方法是不够的,因为每个阶段都是Bson接口的简单实现(即SimplePipelineStage)的实例.这个愚蠢的类没有toString方法的任何覆盖.
使用mongo java驱动程序Aggregates类的工厂方法创建管道,如下所示:
Aggregates.match(/* ... */)
Aggregates.project(/* ... */)
// And so on...
可以找到Javadoc here.
我如何漂亮地打印此类对象?我可以肯定类型BasicDbObject具有智能的toString实现,但是我找不到从Bson转换为BasicDbObject的方法.
非常感谢.
解决方法:
仔细搜索一下,我找到了一种漂亮打印Bson实例的解决方案.诀窍是将其转换为BsonDocument实例,该实例具有toString方法的实现,该方法返回相应JSON的字符串表示形式.
Bson bson = Filters.gt("a", 10);
BsonDocument bsonDocument = bson.toBsonDocument(BsonDocument.class, MongoClient.DEFAULT_CODEC_REGISTRY);
System.out.println(bsonDocument);
原始链接如下:Converting Bson object to BsonDocument.