我正在使用 RavenDB 2.0 不稳定。 是否可以使用 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))
...
这样的事情怎么能完成?
最佳答案
是的,你可以做到这一点。
您可以在 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 数据库引擎中被序列化和执行。
关于f# - 如何在 F# 中使用复杂查询来查询 RavenDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163614/