【发布时间】:2018-02-08 08:23:32
【问题描述】:
我使用 Java 创建了一个复杂的 MongoDB 查询,在执行之前我通常会记录查询:
log.info("Filter: {}", queryFilter);
日志很有用,但打印的queryFilter是这种形式:
And Filter{filters=[Filter{fieldName='FinInstrmGnlAttrbts.ClssfctnTp', value=RFBTCB}, [...] ]}
我想以“Javascript 形式”的方式记录查询,就像它应该直接在 MongoDB 中执行一样,例如:
{$and : [ {'FinInstrmGnlAttrbts.ClssfctnTp' : 'RFBTCB'}, [...] ]}
这样,如果有一天会发生错误,我可以直接从日志中获取查询并在 MongoDB 中进行测试,而无需手动重新输入整个查询。
有没有可能?
【问题讨论】:
-
我没用过它,但看了一下 API 文档(版本 3.5,最新)并猜测
queryFilter的类型是BasicDBObject我看到有一个 toJson 方法.现在你得到了toString方法的结果。如果您改为登录queryFilter.toJson()会发生什么? -
queryFilter是一个org.bson.conversions.Bson对象,它没有toJson方法。 -
你确定吗?这不是具体类型,而是接口。尝试在其上调用
getClass()以找出它的真正含义,然后将其转换为具体类型。 -
我无法转换它,因为我的
queryFilter是com.mongodb.client.model.Filters.AndFilter并且这个类是私有的。而且以更一般的方式,我无法投射它,因为我不知道queryFilter是如何组成的(它可能是AndFilter或OrFilter或...) -
啊,明白了。很高兴您找到了解决方案。
标签: javascript java mongodb