从 spring 数据 mongo 查询 return 单个字段
query to return single field from spring data mongo
我的应用程序中有多个数据源(mysql 和 mongodb),我正在使用 JpaRepository(spring data jpa)和 MongoRepository(spring data mongo ) 分别.
下面的代码用于从车辆获取所有 imei 号码 table(mysql)
@Repository
public interface VehicleRepo extends JpaRepository<Vehicle, Long>{
@Query(value = "SELECT imei FROM vehicle", nativeQuery = true)
public List<Object[]> findImei();
}
我还有另一个 mongo 回购协议,如下所示。
@Repository
public interface DeviceRepo extends MongoRepository<Device, String>{
// looking for a method which returns all the distinct imei
}
我想知道 mongodb 中的查询是什么。
(我的要求是 select 来自设备的所有唯一不同的 imei 字段,并且只有一个字段 selection 像 VehicleRepo)
我尝试了多种组合,但 none 奏效了。
我找不到任何使用@Query 的解决方案,所以我不得不使用 MongoTemplate 来实现相同的目的。
DistinctIterable<String> iterableObject= mongoTemplate.getCollection("collectionName").distinct("fieldName",String.class);
Iterator<String> iter = iterableObject.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
您还可以在自定义存储库方法中使用 mongoTemplate
来实现上面相同的(类似于 Alien 的)响应:
List<String> imeiList = mongoTemplate.query(Device.class)
.distinct("imei")
.as(String.class)
.all();
最新 spring-data-mongo 文档中的更多信息:https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.query.distinct
可能有点晚了,但我正在做同样的事情:
如果你的集合中只有一个字符串(数据类型)字段,而你只想获取这个字段,你可以尝试:
@Query(value = "{ 'groupId' : ?0 }", fields = "{ '_id': 0, 'user.$id':1 }")
List<String> findAllUserIdByGroupId(String groupId);
值意味着查询和字段类型是你想要得到的/忽略
在 mongo 数据库中,您可以通过此站点查看 (https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/)
或 Whosebug 中的答案 (Spring Data Mongo Query Field parameters)
我的应用程序中有多个数据源(mysql 和 mongodb),我正在使用 JpaRepository(spring data jpa)和 MongoRepository(spring data mongo ) 分别.
下面的代码用于从车辆获取所有 imei 号码 table(mysql)
@Repository
public interface VehicleRepo extends JpaRepository<Vehicle, Long>{
@Query(value = "SELECT imei FROM vehicle", nativeQuery = true)
public List<Object[]> findImei();
}
我还有另一个 mongo 回购协议,如下所示。
@Repository
public interface DeviceRepo extends MongoRepository<Device, String>{
// looking for a method which returns all the distinct imei
}
我想知道 mongodb 中的查询是什么。
(我的要求是 select 来自设备的所有唯一不同的 imei 字段,并且只有一个字段 selection 像 VehicleRepo)
我尝试了多种组合,但 none 奏效了。
我找不到任何使用@Query 的解决方案,所以我不得不使用 MongoTemplate 来实现相同的目的。
DistinctIterable<String> iterableObject= mongoTemplate.getCollection("collectionName").distinct("fieldName",String.class);
Iterator<String> iter = iterableObject.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
您还可以在自定义存储库方法中使用 mongoTemplate
来实现上面相同的(类似于 Alien 的)响应:
List<String> imeiList = mongoTemplate.query(Device.class)
.distinct("imei")
.as(String.class)
.all();
最新 spring-data-mongo 文档中的更多信息:https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.query.distinct
可能有点晚了,但我正在做同样的事情: 如果你的集合中只有一个字符串(数据类型)字段,而你只想获取这个字段,你可以尝试:
@Query(value = "{ 'groupId' : ?0 }", fields = "{ '_id': 0, 'user.$id':1 }")
List<String> findAllUserIdByGroupId(String groupId);
值意味着查询和字段类型是你想要得到的/忽略
在 mongo 数据库中,您可以通过此站点查看 (https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/)
或 Whosebug 中的答案 (Spring Data Mongo Query Field parameters)