1
を1つのscan
(またはquery
)に最適化しようとしています。私が見る唯一の方法は、use a OR
comparator using DynamoDBです。 dynogels
(フォークはvogels
)を私のアプリケーションで使用していますが、悲しいことにそこにはOR
というクエリ機能はありません。Dynogels:OR比較によるクエリ
let arrivals = yield Reservation.scan()
.where('room').equals(room)
.where('arrival').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));
let departures = yield Reservation.scan()
.where('room').equals(room)
.where('departure').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));
let combined = arrivals.concat(departures);
return Promise.resolve(combined);
案の最適化:
return Reservation.scan()
.where('room').equals(room)
.where('arrival').between(from, to)
.or.where('departure').between(from, to)
.execAsync().then((reply) => reply.Items.map((item) => item.get()));
スキャンは私にその終わり(departure
)または開始(arrival
)(あるいはその両方)での予約を取得指定された期間(from
、to
)。
ありがとうございます!試してみる。 'filterExpression'構文を意識しておらず、ちょうど良い' dynogels'提供構文を使用しました。 – btype