gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:12:37 25 4
gpt4 key购买 nike

我正在编写一个应用程序,用户可以在其中编写 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、network、单名查询。

例如,我有代码 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com