在我的Spring Boot/Spring Data MongoDB项目中,我有以下POJO:
@Document(collection = "decision_analysis")
public class DecisionAnalysis {
private String id;
private DecisionAnalysisRequest decisionAnalysisRequest;
private DecisionMatrixPageResponse decisionMatrixPage;
private Date createDate;
private HttpRequestData httpRequestData;
...
}
其中DecisionAnalysisRequest
:
public class DecisionAnalysisRequest implements Serializable {
private static final long serialVersionUID = 1493180175756424789L;
private String decisionNameFilterPattern;
private Set<BaseQuery> filterQueries;
private Set<Long> sortCriteriaIds;
private String sortWeightCriteriaDirection;
private String sortTotalVotesCriteriaDirection;
private Map<String, Double> sortCriteriaCoefficients;
private Long sortCharacteristicId;
...
}
@Repository
public interface DecisionAnalysisRepository extends MongoRepository<DecisionAnalysis, String> {
DecisionAnalysis findByDecisionAnalysisRequest(DecisionAnalysisRequest decisionAnalysisRequest);
}
FilterQueries
是一个复合对象数组,例如:
"filterQueries":[
{
"type":"AnyInQuery",
"characteristicId":711903,
"characteristicName":"Body type",
"value":[
"Compact"
],
"operator":"OR"
},
{
"type":"RangeQuery",
"characteristicId":712745,
"characteristicName":"Sensor photo detectors (megapixels)",
"value":[
10,
53
]
}
]
我做错了什么?如何调整代码,以便在FilterQueries
包含数据的情况下,通过DecisionAnalysisRequest
正确查找DecisionAnalysy
文档。
更新
这是一个示例DecisionAnalysisRequest
文档,我将使用它作为键(在UI上选择的每个用户每次该文档中的信息都不同):
{
"sortCriteriaIds":[
711882,
711887,
711884,
711899,
711896,
711897,
711890,
711891,
711888,
711889,
711895,
711892,
711893
],
"sortCriteriaCoefficients":{
},
"pageNumber":0,
"pageSize":10,
"sortWeightCriteriaDirection":"DESC",
"sortid":null,
"sortCharacteristicDirection":null,
"sortDecisionPropertyName":null,
"sortDecisionPropertyDirection":null,
"decisionsIds":[
],
"persistent":true,
"includeChildids":null,
"excludeChildids":null,
"filterQueries":[
{
"type":"AnyInQuery",
"characteristicId":711913,
"characteristicName":"Body material",
"value":[
"Aluminium alloy",
"Brass",
"Carbon fiber"
],
"operator":"OR"
},
{
"type":"AnyInQuery",
"characteristicId":711903,
"characteristicName":"Body type",
"value":[
"Compact SLR",
"Compact"
],
"operator":"OR"
},
{
"type":"EqualQuery",
"characteristicId":712746,
"characteristicName":"Sensor size",
"value":"1/1.7\" (7.44 x 5.58 mm)"
},
{
"type":"AnyInQuery",
"characteristicId":712895,
"characteristicName":"Color space",
"value":[
"Adobe RGB",
"ECI RGB",
"Primary color space"
],
"operator":"OR"
},
{
"type":"AnyInQuery",
"characteristicId":712145,
"characteristicName":"Other resolutions",
"value":[
"1008 x 672",
"1024 x 1024",
"1024 x 576"
],
"operator":"OR"
},
{
"type":"AnyInQuery",
"characteristicId":712738,
"characteristicName":"Image ratio w:h",
"value":[
"1:1",
"3:2",
"4:3"
],
"operator":"OR"
},
{
"type":"RangeQuery",
"characteristicId":712744,
"characteristicName":"Effective pixels (megapixels)",
"value":[
9,
44
]
},
{
"type":"EqualQuery",
"characteristicId":712901,
"characteristicName":"Color filter array",
"value":"RGB color filter array"
},
{
"type":"EqualQuery",
"characteristicId":712921,
"characteristicName":"Image stabilization",
"value":"Sensor-shift"
},
{
"type":"AnyInQuery",
"characteristicId":712944,
"characteristicName":"Uncompressed format",
"value":[
"No",
"RAW",
"TIFF"
],
"operator":"OR"
},
{
"type":"AnyInQuery",
"characteristicId":712928,
"characteristicName":"Image parameters",
"value":[
"Brightness",
"Color",
"Color Space",
"Color Tone",
"Contrast"
],
"operator":"OR"
},
{
"type":"RangeQuery",
"characteristicId":712919,
"characteristicName":"White balance presets",
"value":[
2,
10
]
},
{
"type":"RangeQuery",
"characteristicId":712917,
"characteristicName":"Boosted ISO (minimum)",
"value":[
1762,
10741
]
},
{
"type":"AnyInQuery",
"characteristicId":712950,
"characteristicName":"File format",
"value":[
"3FR",
"AGIF",
"ARW"
],
"operator":"OR"
},
{
"type":"RangeQuery",
"characteristicId":712918,
"characteristicName":"Boosted ISO (maximum)",
"value":[
339298,
2878034
]
},
{
"type":"RangeQuery",
"characteristicId":713340,
"characteristicName":"Normal focus range (cm)",
"value":[
22,
131
]
},
{
"type":"EqualQuery",
"characteristicId":713343,
"characteristicName":"Lens mount",
"value":"Leica M"
},
{
"type":"AnyInQuery",
"characteristicId":713325,
"characteristicName":"Autofocus",
"value":[
"Center",
"Continuous",
"Contrast Detect (sensor)",
"Face Detection",
"Live View"
],
"operator":"OR"
},
{
"type":"RangeQuery",
"characteristicId":713341,
"characteristicName":"Macro focus range (cm)",
"value":[
19,
75
]
},
{
"type":"RangeQuery",
"characteristicId":713342,
"characteristicName":"Number of focus points",
"value":[
78,
468
]
},
{
"type":"RangeQuery",
"characteristicId":713388,
"characteristicName":"Viewfinder resolution (dots)",
"value":[
633548,
3722581
]
},
{
"type":"RangeQuery",
"characteristicId":713386,
"characteristicName":"Viewfinder coverage %",
"value":[
84,
97
]
}
]
}
查询是在服务器端运行的,因此必须从服务器的角度来看性能。
对于文档连续数据增长,您将达到16MB内存限制。
您必须使用点表示法到达FilterQueries
嵌入式文档进行比较。
@Query("{decisionAnalysisRequest.filterQueries :?0}")
DecisionAnalysis findByDecisionAnalysisRequest(BasicQuery filter);
在将输入DecisionAnalysisRequest
与数据库DecisionAnalysisRequest
进行比较时没有得到响应的原因是,该数据库具有更多FilterQueries
。
您应该研究document/embedded document/embedded数组上字段的比较标准,而不是比较整个document/embedded document/embedded数组。
问题内容: 我有以下代码。我想掌握用来创建内部类对象的外部类对象。我该怎么做? 编辑:好,你们中的一些人建议通过添加方法来修改内部类: 但是,如果我没有控制权来修改内部类,那(只是确认一下),我们还有其他方法可以从内部类对象中获取相应的外部类对象吗? 问题答案: 在内部类本身中,你可以使用。该表达式允许引用任何词法包围的实例,在JLS中被描述为。 我认为没有办法从内部类的代码之外获取实例。当然,你
问题内容: 我的问题与JVM的安全级别有关 我们如何通过证明哈希码来从内存中获取对象? 今天我在想。我在执行环境One中创建类A的对象。并从此处获取该对象的哈希码。 现在在另一个执行环境中,我想通过提供哈希码来返回A类对象。 我认为有可能。因为当我执行环境一时。我一次又一次地得到那个JVM返回相同的哈希码。 表示它首先在其缓存中找到对象。如果得到引用,则将其返回。 现在回到问题,我们必须了解在编写
4.4. 通过 getattr 获取对象引用 4.4.1. 用于模块的 getattr 4.4.2. getattr 作为一个分发者 你已经知道 Python 函数是对象。 你不知道的是,使用 getattr 函数,可以得到一个直到运行时才知道名称的函数的引用。 例 4.10. getattr 介绍 >>> li = ["Larry", "Curly"] >>> li.pop
问题内容: 具有内部字段的枚举,有点像地图。 现在,我需要按其内部字段枚举。 写下: 但是,每次需要查找适当的实例时,对所有枚举进行查找并不是非常有效。 还有其他方法可以做到吗? 问题答案: 您可以将a 与初始化程序一起使用,该初始化程序将使用由其字段键入的值来填充它。 请注意,已完成,也已完成。 您现在可以期望是一个操作。 参考文献 JLS 8.7静态初始值设定项 JLS 8.9枚举 注意 该方
我有两个表1)krs_question_bank 2)krs_options 而我正在调用Session.Save(问题)。生成了Hibernate查询,但..我有以下错误。有什么办法可以解决这个错误吗?
问题内容: 我从字符串定义一个新的gson对象: 此处的字符串示例:http : //api.soundrop.fm/spaces/XJTt3mXTOZpvgmOc 然后尝试返回一个值: 最后用: 但是我得到一个错误: 完整班:主班:http : //pastebin.com/v4LrZm6k 无线电班:http : //pastebin.com/2BWwb6eD 问题答案: 这是Java。字段根