私は単純な問題だと思っていたことに対処するのに問題があります。基本的には、java.util.Map<String, String>
が必要です.idがマップキーになり、someField
が値になります。ektorpを使ってidからcouchdbの文字列propにjava.util.Mapを取得するには
私は本当にこれに執着しています。これは非常に驚きです。それはJSONはそうと、
public Map<String, String> getSomeFields() throws JsonParseException, JsonMappingException, IOException {
ViewQuery q = new ViewQuery().designDocId("_design/" + entity.getSimpleName()).viewName("someField");
String result = StreamUtils.inputStreamAsString(db.queryForStream(q), false);
TypeReference<Map<String, String>> mapTypeRef = new TypeReference<Map<String,String>>() {};
// mapper is a Jackson ObjectMapper
return mapper.readValue(result, mapTypeRef);
}
これはすでに本当に醜いですが、それはまた、実際には動作しません。そして、
@View(map="function(d) { if (d.someField) { emit(d.someField, null); } }", name = "someField")
と次のJavaを使用します。私は別のビューを書いてみました結果としてqueryForStream
には、クエリの結果だけでなく、ランダムな他のものも含まれます。これにより、readValue
コールがIOException
をスローするようになります。
私も、これらすべての値を含む単一のオブジェクトを生成するreduce
を使用してみましたが、その結果は
これが最も簡単な解決策になりそうだ、感謝を! (これはそのままでは動作しません。AFAICTでは、結果セットを取得する前に '.queryView'呼び出し結果で' .getRows() 'を実行する必要があります) – Gijs