Spring Boot 如何在Sping Boot 日志中查看mongo阵列过滤器?

gojuced7  于 2023-02-16  发布在  Spring
关注(0)|答案(1)|浏览(150)

我有一个带有数组筛选器的更新查询

Query query = new Query(Criteria.where("_id").is(projectId));
Update update = new Update().set("requirements.$[element].status", status)
        .filterArray(Criteria.where("element._id").is(requirementId));
mongoTemplate.updateFirst(query, update, "Projects");

我打开了日志记录:

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG

我在日志中看到:

o.s.data.mongodb.core.MongoTemplate: Calling update using query: { "_id": "633f3def5272e102ee753e98"}} and update: { "$set" : { "requirements.$[element].status" : "PENDING"}} in collection: Projects

我想查看数组筛选器,但它不存在。是否有办法在日志中查看它?

tcbh2hod

tcbh2hod1#

您可以将其设置为调试级别。

org.mongodb.driver.protocol.command: debug

你会看到像这样的东西,

org.mongodb.driver.protocol.command : Sending command '{"update": "Projects", "ordered": true, "$db": "test", 
"lsid": {"id": {"$binary": {"base64": "RhF9RRj4Td2A3ULff0ARrg==", "subType": "04"}}}, 
"updates": [{"q": {"_id": "a"}, "u": {"$set": {"requirements.$[element].status": "s"}}, "arrayFilters": [{"element._id": "a"}]}]}'
with request id 7 to database test on connection [connectionId{localValue:3, serverValue:27}] to server localhost:27017

但是,这也增加了很多不必要的日志。
另一种选择是在代码中自己添加日志。

update.getArrayFilters().forEach(a -> log.info("\"arrayFilters\": "+ a.asDocument().toJson()));

这将产生这样的结果。

"arrayFilters": {"element._id": "a"}

相关问题