如何使用mongodb java-driver Projections.slice

时间:2016-11-12 16:06:53

标签: java mongodb

我正在尝试使用Aggregates.project来切割文档中的数组。 我的文件就像

{
"date":"",
"stype_0":[1,2,3,4]
}
在mongochef中看起来像 the document

我在java中的代码是:

Aggregates.project(Projections.fields(
                                Projections.slice("stype_0", pst-1, pen-pst),Projections.slice("stype_1", pst-1, pen-pst),
                                Projections.slice("stype_2", pst-1, pen-pst),Projections.slice("stype_3", pst-1, pen-pst))))

最后我得到错误

First argument to $slice must be an array, but is of type: int

我想这是因为stype_0中的第一个元素是int,但我真的不知道为什么?非常感谢!

1 个答案:

答案 0 :(得分:3)

Slice有两个版本。 $slice(aggregation)& $slice(projection)。你使用的是错误的。

聚合切片功能没有任何内置支持。下面是一个这样的投影的例子。对所有其他投影字段执行相同操作。

List stype_0 = Arrays.asList("$stype_0", 1, 1);    
Bson project = Aggregates.project(Projections.fields(new Document("stype_0", new Document("$slice", stype_0))));
AggregateIterable<Document> iterable = dbCollection.aggregate(Arrays.asList(project));