1

RavenDB で

ID に基づいてドキュメントの最新の挿入を取得し、リストから ID でフィルター処理する必要があります

すなわち:

List<Entity> GetLastByIds(List<int> ids);

エンティティは次のようになります。

class Entity
{
int id; //Unique identifier for the category the price applies to.
int Price; //Changes with time
DateTime Timestamp; //DateTime.UtcNow
}

したがって、次を挿入すると:

session.Store(new Entity{Id = 1, Price = 12.5});
session.Store(new Entity{Id = 1, Price = 7.2});
session.Store(new Entity{Id = 1, Price = 10.3});
session.Store(new Entity{Id = 2, Price = 50});
session.Store(new Entity{Id = 3, Price = 34});
...

ID 1 と 3 の最新の価格を取得するにはどうすればよいですか??

Map/Reduce が正常に機能しており、各 ID の最新情報が得られます。苦労しているのはフィルタリングです。すべての ID の合計で 1024 を超える価格ポイントがある場合、クライアント側でフィルタリングを行うのは無意味なので、Raven でフィルタリングを行いたいと考えています。

私が得ることができるどんな助けにも感謝します。

事前にどうもありがとうございました :)

4

1 に答える 1

5

がカテゴリを表すと思われる場合は、Idと呼ぶ必要がありますCategoryId。プロパティを呼び出すことによりId、そのドキュメントの主キーとして扱われるべきであるという Raven の規則を理解しています。同じドキュメントの複数のバージョンを保存することはできません。最後のバージョンを上書きするだけです。

インデックスを正しく作成したと仮定すると、次のようにクエリを実行するだけです。

using Raven.Client.Linq;

...

var categoryIds = new[] {1, 3};  // whatever
var results = session.Query<Entity, YourIndex>()
                     .Where(x=> x.CategoryId.In(categoryIds));

(.In拡張メソッドはRaven.Client.Linq名前空間にあります。)

于 2013-11-02T21:25:42.597 に答える