我正在使用RavenDB 2.0 unstable。 是否可以使用来自F#的lambda或类似技术(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))
...
如何完成这样的事情?
答案 0 :(得分: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))
有几点需要注意。
DocumentStore应该只在应用程序启动时创建一次。
通常在查询表达式中只能使用一小组库调用,因此我传入已计算的日期。原因是因为这些表达式树最终在raven db引擎中被序列化并执行。