以javascript形式记录Bson查询

以javascript形式记录Bson查询,javascript,java,mongodb,Javascript,Java,Mongodb,我使用Java创建了一个复杂的MongoDB查询,在执行它之前,我通常会记录查询: log.info("Filter: {}", queryFilter); 日志是有用的,但查询过滤器是按以下形式打印的: And Filter{filters=[Filter{fieldName='FinInstrmGnlAttrbts.ClssfctnTp', value=RFBTCB}, [...] ]} 我希望以Javascript形式记录查询,其方式与直接在MongoDB中执行的方式相同,如: {$a

我使用Java创建了一个复杂的MongoDB查询,在执行它之前,我通常会记录查询:

log.info("Filter: {}", queryFilter);
日志是有用的,但查询过滤器是按以下形式打印的:

And Filter{filters=[Filter{fieldName='FinInstrmGnlAttrbts.ClssfctnTp', value=RFBTCB}, [...] ]}
我希望以Javascript形式记录查询,其方式与直接在MongoDB中执行的方式相同,如:

{$and : [ {'FinInstrmGnlAttrbts.ClssfctnTp' : 'RFBTCB'}, [...] ]}
这样,如果有一天会发生错误,我可以直接从日志中获取查询并在MongoDB中测试它,而无需手动重新键入整个查询

有可能吗?

我已经决定

BsonDocument bsonDocument = queryFilter.toBsonDocument(BsonDocument.class, MongoClient.getDefaultCodecRegistry());
log.info("Filter: {}", bsonDocument);

我没有使用过它,但通过查看最新的API文档版本3.5,并猜测queryFilter的类型是BasicDBObject,我发现有一个方法。现在,您将获得toString方法的结果。如果改为登录queryFilter.toJson会发生什么情况?queryFilter是org.bson.conversions.bson对象,它没有toJson方法。确定吗?这不是一个具体的类型,这是一个接口。尝试对其调用getClass以了解它的真实情况,然后将其转换为其具体类型。我无法转换它,因为我的queryFilter是com.mongodb.client.model.Filters.AndFilter,并且该类是私有的。更一般地说,我不能强制转换它,因为我不知道queryFilter是如何组成的,它可以是AndFilter或OrFilter,或者……啊,明白了。很高兴你找到了解决办法。