2016-11-12 11 views
0

私のドキュメントでアレイをスライスするためにAggregates.projectを使用しようとしています。 マイドキュメントはmongochefにmongodb java-driver Projections.sliceの使い方

{ 
"date":"", 
"stype_0":[1,2,3,4] 
} 

のようなものであることは 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ですが、なぜ私は本当に知りませんか?どうもありがとう!

答えて

2

スライスには2つのバージョンがあります。 $slice(aggregation) & $slice(projection)。あなたは間違ったものを使用しています。

集約スライス機能にはビルトインサポートがありません。以下はそのような投影法の例です。他のすべての投影フィールドで同じ操作を行います。

BasicDBList stype_0 = new BasicDBList(); 
    stype_0.add("$stype_0"); 
    stype_0.add(1); 
    stype_0.add(1); 

    Bson project = Aggregates.project(Projections.fields(new BasicDBObject("stype_0", new BasicDBObject("$slice", stype_0)))); 

    AggregateIterable<Document> iterable = dbCollection.aggregate(Arrays.asList(project)); 
+0

ああ私はとても不注意です、ありがとうございます – CXWorks

関連する問題