gpt4 book ai didi

mongodb - MongoRepository 在数组中查找列表

转载 作者:可可西里 更新时间:2023-11-01 10:02:31 26 4
gpt4 key购买 nike

我有一个看起来像这样的文档

@Document
public @Data class Note {

@Id
private String noteId;
private String owner;
@TextIndexed
private String name;
@TextIndexed
private String text;
private List<String> tags;
private LocalDate date;
}

我还使用 spring data mongodbmongodb 数据存储上进行操作。我创建了界面

public interface NoteRepository extends MongoRepository<Note, String> {
List<Note> findByTags(List<String> tags);
}

我存储的对象是这样的

[
{
"noteId": "594e4adc3bc5152218f933b4",
"owner": "system",
"name": "simple note",
"text": "My text",
"tags": [
"tag1",
"tag2",
"tag3"
],
"date": [
1992,
12,
15
]
}
]

但除非我不向 findByTags 方法提供 tag1、tag2、tag3 等标签列表,否则它不会返回任何结果。例如 tag1, tag2 什么都不返回等等。

我应该如何对这些标签进行搜索?使用一些 TextCriteria

最佳答案

这取决于你想提供什么。

如果您只需要一个值,那么 MongoDB 不会关心数据是否在数组中,只会在所有条目中查找匹配项

public interface NoteRepository extends MongoRepository<Note, String> {
List<Note> findByTags(String tags);
}

如果你想要一个可变大小的列表来比较可能匹配的“任何”,那么有一个 keyword used by spring-mongo影响 $in操作:

public interface NoteRepository extends MongoRepository<Note, String> {
List<Note> findByTagsIn(List<String> tags);
}

所以第一个是您只希望 "tag1" 匹配数据的地方。第二个将匹配 List,例如 "tag1"、"tag2" 或任何只要“至少一个”实际存在于被搜索数组中的任何内容。

关于mongodb - MongoRepository 在数组中查找列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44736418/

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