2017-03-24 5 views
0
ArrayList<Filters> fieldList = new ArrayList(); 
fieldList.add(Filters.lte("ID", 5)); 
fieldList.add(Filters.lt("amount", 500)); 
Bson group = Aggregates.group("$NAME",id,name,amount); 
List<Object> results = collection.aggregate(Arrays.asList(Aggregates.match((Bson) fieldList), Aggregates.group(group))).into(new ArrayList<>());// error occurring here 

どのように私はこの問題を解決することができますか?型ArrayList <Filters>のadd(Filters)メソッドは、java?を使用するmongodbの引数(Bson)には適用されません。

+0

どのコード行にエラーが表示されますか? –

+0

あなたはBsonのarraylistが必要です。 'List のようなものfieldList = new ArrayList(); ** java.util.ArrayListのはorg.bson.conversions.Bsonにキャストすることはできませんので、私は決して** @Veeram – Veeram

+0

どのくらい多くの条件が来るかを知っています(彼らはjsonから来ています)@Veeram – svm

答えて

1

あなたはより多くのフィルタを追加するandフィルタを使用することができます。私はリストにすべてのフィルタ条件を追加することができています。このことにより、

List<Bson> fieldList = new ArrayList(); 
    fieldList.add(Filters.lte("ID", 5)); 
    fieldList.add(Filters.lt("amount", 500)); 
    Bson match = Aggregates.match(Filters.and(fieldList)); 

:@Veeramで与え

Bson match = Aggregates.match(Filters.and(Filters.lte("ID", 5), Filters.lt("amount", 500))); 
Bson group = Aggregates.group("$NAME", id, name, amount); 
List<Document> results = collection.aggregate(Arrays.asList(match, group), Document.class).into(new ArrayList<>()); 
+0

カントは、私は、リストにすべてのフィルタ条件を追加していない:私はすでにエラーを取得し、それを試してみました ' – svm

+0

あなたはまだリストに一度に1つずつ追加しています。あなたのjsonはどのように見えるのですか?どの演算子がどのフィールドに対して使用されるのか、どのように知っていますか? – Veeram

+0

私はjsonでパラメータを渡す方法を考えていません。一覧にループしてAggregates.match()を個別に追加できるように、一度にすべてのフィルタ条件をリストに追加することはできません。なにか提案を? @Veeram – svm

1

ソリューションは

ソリューションを働きました。

関連する問題