c# - RavenDb 存储和检索无类对象 (json)

标签 c# json ravendb persistent-object-store

我正在编写一个应用程序,用户可以在其中编写 json 代码并使用 Id 和 Collection 存储该 json 代码。换句话说,它们指定一个 Id、一个 Collection(字符串;[a-zA-Z0-9])和一个 Data(json,可以是任何有效的 json)。

到目前为止,我一直在使用 RavenDb,因为我认为文档数据库是完美的,但我在查询方面遇到了一些问题。

需要存储和查询的对象之一如下:

{
    "network": "some_network",
    "names": ["name1","name2"],
    "data": {"values":[],"keys":[]}
}

这个对象应该与一些指定的或自动生成的Id(如果给出了null)和一个Collection(必须始终指定)一起存储,然后我需要能够根据Collection、网络、单个名称进行查询。

例如,我有代码 query('users', '{"network":"some_network","names":"name1"}'),我需要该代码返回此对象(以及与其匹配的任何其他对象)。

此外,我可以更改数据库,但数据库需要能够在进程内运行(自托管),并且能够在没有管理员权限的情况下运行而无需安装(换句话说,它可以不像 wcf 那样绑定(bind)到主机名/IP)。

我怎样才能实现这样的目标?

最佳答案

我找到了答案:

    public string Query(string dynIndexName, string query)
    {
        using (var session = store.OpenSession())
        {
            var q = new IndexQuery();
            q.Query = query;
            var result = session.Advanced.DatabaseCommands.Query("dynamic/" + dynIndexName, q, new string[0]);
            return "[" + String.Join(",", result.Results.Select(r => r.ToString())) + "]";
        }
    }

在调用查询方法之前,我将 json-query-object 转换为 Lucene 查询,如下所示:(network:"some_network"AND names:"name1"),并使用作为数据库的查询参数。用于存储和检索的整个类可以在这里找到:https://github.com/Alxandr/RunJS/blob/master/src/AddIns/Storage/StorageMbro.cs

关于c# - RavenDb 存储和检索无类对象 (json),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7381772/

相关文章:

json - 为 Azure 文件共享存储帐户部署模板时遇到的问题

json - 如何解析wordpress post_meta表值

javascript - 使用 javascript 遍历 json - 查找具有特定父值的子项

asp.net - 在操作之外执行异步操作 asp.net mvc

c# - 网络 API : Configure JSON serializer settings on action or controller level

c# - 执行 ChartImg.axd 的子请求时出错。这不是重复的

c# - RavenDb 索引用于对嵌套结构/集合的属性进行过滤和排序(扇出索引)

c# - 如何加快 Raven DB 查询性能?

c# - VS2017 - 如何删除关于依赖验证的每类警告

c# - 在 ASP.NET Core 中全局重用变量