3

RavenDB 2.0 不安定版を使用しています。F# からラムダまたは同様の手法 (linq?) を使用して RavenDB 2.0 にクエリを実行することは可能ですか?

これがインテントのサンプルコードです。過去 72 時間のすべての投稿を取得しようとしています。それは間違っていますが、アイデアは伝わります。

static member public GetTopPosts _ =
    use store = (new DocumentStore(Url = Docs.serverUrl, DefaultDatabase = Docs.dbName )).Initialize()
    use session = store.OpenSession()
    let result = session.Query<Post>().Where(fun x -> x.Date > DateTime.Now - new TimeSpan(72,0,0))
    ...

どうすればこのようなことを達成できるでしょうか?

4

1 に答える 1

3

はい、できます。

この例はFAKEにあります。

あなたの場合、クエリは次のようになります

let getTopPostsAsOf date =
    use session = docStore.OpenSession()
    query {
       for post in session.Query<Post>() do
       where (post.Date > date)
       select post
    } |> Seq.toArray

これは次のように呼び出されます

let result = getTopPostsAsOf (DateTime.Now - TimeSpan.FromHours(72))

注意すべきことがいくつかあります。

  1. DocumentStore は、アプリケーションの起動時に一度だけ作成する必要があります。

  2. また、通常、クエリ式内で使用できるライブラリ呼び出しのセットはごくわずかであるため、既に計算された日付を渡すのはそのためです。これは、これらの式ツリーが最終的にシリアル化され、raven db エンジン内で実行されるためです。

于 2013-02-20T19:08:31.340 に答える