我收集了以下格式。
{
id:____,
name:"Carlos",
city:"Mumbai"
},
{
id:____,
name:"Pravin",
city:"Mumbai"
},
{
id:_____,
name:"Gaurav",
city:"Ahmedabad"
}
我希望整个文件与城市截然不同。我尝试了db.collection.distinct(“city”)。但它只返回不同的城市。
当前输出:
["Mumbai","Ahmedabad"]
预期产出:
{
id:____,
name:"Carlos",
city:"Mumbai"
},
{
id:_____,
name:"Gaurav",
city:"Ahmedabad"
}
上面你可以看到只有一个“孟买”的记录。我需要这种输出。
任何人都知道我们如何在spring-mongodb中获得不同的整个文档?
答案 0 :(得分:0)
您可以尝试运行汇总管道操作,您可以使用 $group
运算符在 $first
管道阶段中包含其他字段。显示这种方法的两个例子如下:
Mongo Shell:
pipeline = [
{
"$group": {
"_id": "$city",
"id": { "$first": "$_id" },
"name": { "$first": "$name" }
}
}
]
db.collection.aggregate(pipeline);
Spring Data MongoDB:
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
MongoTemplate mongoTemplate = repository.getMongoTemplate();
Aggregation agg = newAggregation(
group("city")
.first("_id").as("id")
.first("name").as("name")
);
AggregationResults<OutputType> result = mongoTemplate.aggregate(agg,
"collection", OutputType.class);
List<OutputType> mappedResult = result.getMappedResults();