gpt4 book ai didi

java - MongoTemplate条件查询翻译似乎不正确

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:53 26 4
gpt4 key购买 nike

我正在查询一个具有嵌套对象的集合。域模型如下所示:

@Document(collection="a")
public class A {

protected Map<String, B> fields;
protected String uuid;
protected Date updatedTs;

//Getters and setters and other fields omitted
}

public class B{

protected String c;
protected String d;

}

我正在使用如下所示的条件进行查询:

{ "uuid" : "9DA291A4-1BAB-4B9C-844D-681C3F1ABF6E"}

我使用它创建

Criteria.where("uuid").is(uuid);

我可以看到标准对象不包含其他内容,因为我可以像这样打印出来:

log.debug("Criteria: " + SerializationUtils.serializeToJsonSafely(c.getCriteriaObject()));

如果我打开包 org.springframework.data.mongodb.core 的调试日志记录,我可以看到实际发送到服务器的查询是:

{ "uuid" : "9DA291A4-1BAB-4B9C-844D-681C3F1ABF6E"} fields: null

编辑:我的文档包含一个名为“fields”的字段,似乎我的代码或 mongoTemplate/spring-data 中的某些内容实际上正在搜索 fields: null。 MongoTemplate 的日志行让我很困惑,因为 fields: null 实际上是指要返回的一组字段名称。

那么,如何搜索与该 uuid 匹配的文档,而不需要 spring-data 仅返回属性“fields”为 null 的文档?

同时,仍在研究如何解决这个问题,因为我无法更改文档结构......

最佳答案

您在日志输出中看到的字段与您的域对象无关。这通过将其放置在 JSON 字符串的外部来表明。在这种情况下,fields 指的是为找到的每个文档返回的字段,本质上是 projection mechanism.

关于java - MongoTemplate条件查询翻译似乎不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com