ユーザーとブランドの2つの異なるエンティティを関連付けるスキーマをセットアップしました。この関連付けは、文書UserBrandに格納されます。ユーザーは複数のブランドを持つことができ、各UserBrandドキュメントには、含まれる情報が異なります。ここで複数のグループ化されたドキュメントの合計結果
は、3つの文書の例です。見ての通り
{
type: "UserBrand",
userId: "x",
brandId: 1,
value: 100
}
{
type: "UserBrand",
userId: "x",
brandId: 2,
value: 50
}
{
type: "UserBrand",
userId: "y",
brandId: 1,
value: 150
}
、ユーザー「X」は複数のブランドをたどります。ユーザー情報をフェッチしている間に、ユーザーのグループ化された値の合計を取得するにはどうすればよいですか?
SELECT ub.*, u.name FROM bucket as ub JOIN bucket as u ON KEYS "User_" || ub.userId WHERE ub.type="UserBrand" AND u.type="User" AND (ub.brand=1 OR ub.brand=2)
が、私はグループにレコードを思えるし、単一のユーザーのための値を合計することはできません。
これまでのところ私はこのクエリによって、両方のドキュメントタイプ(ユーザーとUserBrand)に参加することができています。単一のクエリでこれを行うことは可能ですか?なぜあなたは「参加」ではなく、単にの「グループによって」使用している
{
type: "UserBrand",
name: "name1',
userId: "x",
brandId: 1,
value: 150
}
{
type: "UserBrand",
name: "name2',
userId: "y",
brandId: 1,
value: 150
}
は、あなたの最終的な結果として、何を見ていますか? –
@RoiKatz上記のクエリを実行すると、多かれ少なかれ同じ例が得られます。私はドキュメントを繰り返して値を合計することができたと思いますが、レコードが増えれば、単一のクエリがより効率的になると考えていました。 –