У меня иногда возникает необходимость обновить сразу несколько документов, 10K или даже больше, и я думаю, что является преимуществом/недостатком во всех отношениях?Каково преимущество/недостаток в каждом способе обновления большого количества документов в Couchbase, Java SDK?
Я подумал о двух способах этого сделать, и я с удовольствием пойму, что является преимуществом/недостатком и слышать на третьем пути.
Я ищу хороший пакетный способ для этого.
путь 1, отправить наблюдаемый, чтобы получить все документы и сделать работу:
Observable
.from(ids)
.flatMap(new Func1<String, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(String id) {
return bucket.async().get(id);
}
})
.map(new Func1<JsonDocument, JsonDocument>() {
@Override
public JsonDocument call(JsonDocument original) {
// do some change in the document content
original.content().put("add", "content");
return original;
}
})
.flatMap(new Func1<JsonDocument, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(JsonDocument modified) {
return bucket.async().replace(modified);
}
}).subscribe();
путь 2, выполняемую в каждом документе идентификаторе и использовать асинхронный получить, а затем изменить документ асинхронного путь:
for (String id : ids){
bucket.async()
.get(id)
.map(new Func1<JsonDocument, JsonDocument>() {
@Override
public JsonDocument call(JsonDocument jsonDocument) {
// do some change in the document content
jsonDocument.content().put("add", "content");
return jsonDocument;
}
})
.flatMap(new Func1<JsonDocument, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(JsonDocument modified) {
return bucket.async().replace(modified);
}
}).subscribe();
}
в варианте 2, когда у меня нет документа, я ожидаю получить нуль, но процесс завершится, что мне делать? –
Вы можете попытаться связать defaultIfEmpty (null) после получения, я думаю –