gpt4 book ai didi

java - Spring数据MongoDB : search like on multiple fields

转载 作者:行者123 更新时间:2023-12-01 17:52:24 25 4
gpt4 key购买 nike

我有一个 MongoDB 集合,其中包含具有两个字段的 User 对象:名字和姓氏。我需要一个仅使用一个字符串(代表用户全名)的查询来进行 findLike 研究。

问题与此相同question但我不知道如何使用 MongoTemplate 或 @Query 注释在 Spring Data 中转换 MongoDB 存储库的查询

编辑:使用项目运算符,我必须指定我想要包含在阶段中的所有字段。更好的解决方案可能是使用 AddFields 运算符:我发现的一个类似的问题是: https://stackoverflow.com/a/40812293/6545142

如何将 $AddFields 运算符与 MongoTemplate 一起使用?

最佳答案

您可以使用$expr ( 3.6 mongo 版本运算符)在常规查询中使用聚合函数仅进行精确匹配。

Spring@Query代码

@Query("{$expr:{$eq:[{$concat:["$Firstname","$Lastname"]}, ?0]}}")
ReturnType MethodName(ArgType arg);

对于类似搜索或精确搜索,您必须在较低版本中通过 mongo 模板使用聚合。

AggregationOperation project = Aggregation.project().and(StringOperators.Concat.valueOf("Firstname").concatValueOf("Lastname")).as("newField");

类似匹配

AggregationOperation match = Aggregation.match(Criteria.where("newField").regex(val));

精确匹配

AggregationOperation match = Aggregation.match(Criteria.where("newField").is(val));

其余代码

 Aggregation aggregation = Aggregation.newAggregation(project, match);
List<BasicDBObject> basicDBObject = mongoTemplate.aggregate(aggregation, colname, BasicDBObject.class).getMappedResults();

关于java - Spring数据MongoDB : search like on multiple fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48586233/

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