我已经在spring boot中创建了一个项目,我可以使用mongo repository从我的mongodb数据库中检索数据。
我想在我的春季启动应用程序中编写一个查询,它允许我获取另一个属性的给定值的属性的不同值。
示例
tag1 | tag2 | tag3
mod | test | v1
mod1 | test1 | v2
mod1 | test1 | v3
mod1 | test1 | v4
预期: 当我使用值mod1为tag1变量调用方法findbyTag1(String tag1)时,我希望获得tag2的不同值。在这种情况下,结果将是test1。
有什么解决方案吗?
答案 0 :(得分:1)
MongoDB查询: -
db.tags.distinct("tag2",{"tag1" : "mod1"});
等效Java代码: -
请相应更改数据库和集合名称。
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.DistinctIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class GetDistinctTagsValues {
public static void main(String[] args) {
MongoClient client = new MongoClient();
MongoDatabase database = client.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("tags");
DistinctIterable<String> collectionData = collection.distinct("tag2", Filters.eq("tag1", "mod1"), String.class);
for (String doc : collectionData) {
System.out.println(doc);
}
client.close();
}
}
<强>相关性: - 强>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.2</version>
</dependency>