Java SpringMongo存储库切片
我将spring sata mongodb 1.8.2与MongoRepository一起使用,并尝试在查询时使用mongo$slice选项限制列表大小,但在MongoRepository中找不到此选项 我的课程是这样的:Java SpringMongo存储库切片,java,spring,mongodb,spring-data,spring-data-mongodb,Java,Spring,Mongodb,Spring Data,Spring Data Mongodb,我将spring sata mongodb 1.8.2与MongoRepository一起使用,并尝试在查询时使用mongo$slice选项限制列表大小,但在MongoRepository中找不到此选项 我的课程是这样的: public class InnerField{ public String a; public String b; public int n; } @Document(collection="Record") punlic class Record
public class InnerField{
public String a;
public String b;
public int n;
}
@Document(collection="Record")
punlic class Record{
public ObjectId id;
public List<InnerField> fields;
public int numer;
}
公共类内部字段{
公共字符串a;
公共字符串b;
公共int n;
}
@文件(收集=“记录”)
双关语类记录{
公共对象id;
公共列表字段;
公共整数;
}
如您所见,我有一个集合名称“Record”,文档包含InnerField。InnerField列表一直在增长,因此我希望在查询时限制所选字段的数量
我看到:
这正是我所需要的,但我在mongorepository中找不到相关参考
有什么想法吗?在
Query
中为$slice
操作符提供抽象仍然是一个悬而未决的问题。请投票支持并帮助我们确定优先顺序
现在,您仍然可以使用BasicQuery
String qry=“{\”\u id\:\“记录id\”}”;
字符串字段=“{\”字段\“:{\“$slice\”:2}}”;
BasicQuery查询=新的BasicQuery(qry,字段);
使用Java Mongo驱动程序中提供的切片功能,使用以下代码中的投影
例如:
List<Entity> list = new ArrayList<Entity>();
// Return the last 10 weeks data only
FindIterable<Document> list = db.getDBCollection("COLLECTION").find()
.projection(Projections.fields(Projections.slice("count", -10)));
MongoCursor<Document> doc = list.iterator();
while(doc.hasNext()){
list.add(new Gson().fromJson(doc.next().toJson(), Entity.class));
}
List List=new ArrayList();
//仅返回最近10周的数据
FindTable list=db.getDBCollection(“COLLECTION”).find()
.投影(投影.字段(投影.切片(“计数”,-10));
MongoCursor doc=list.iterator();
while(doc.hasNext()){
add(new Gson().fromJson(doc.next().toJson(),Entity.class));
}
上述查询将获取实体类类型的所有文档,每个实体类文档的“字段”列表将只有最后10条记录。我在单元测试文件()中找到了使用slice的方法。像这样的东西
newAggregation(
UserWithLikes.class,
match(new Criteria()),
project().and("likes").slice(2)
);