【问题标题】:How to store JSON to RavenDB?如何将 JSON 存储到 RavenDB?
【发布时间】:2011-11-09 21:17:30
【问题描述】:

我想获取现有数据并将其放入 RavenDB。

我现有的数据是 XML 格式,所以我将其转换为 JSON。

我的下一步应该是什么? 我可以将它按原样存储在 RavenDB 中吗? 我需要创建新对象来存储它吗?

提前致谢!

【问题讨论】:

  • @ShaunWilson 这就是为什么它被发布为评论,而不是作为答案。

标签: c# json nosql json.net ravendb


【解决方案1】:

使用 RavenDB 客户端向 RavenDB 提交内容不是强制性的,也不需要首先填充域模型。这是不必要的工作,只会使数据提交/插入/迁移/导入的过程复杂化。

您可以使用HTTP API 直接向 RavenDB 提交 JSON 格式的文档,特别是您可能希望查看“单文档操作”主题以获取简单示例(当前)显示使用“curl”的示例。

考虑以下 .NET 代码:

var url = string.Format("http://ravendb-server:8080/databases/{0}/docs/{1}", databaseName, docId);
var webRequest = System.Net.HttpWebRequest.CreateHttp(url);
webRequest.Method = "PUT";
webRequest.ContentType = "application/json";
webRequest.Headers["Raven-Entity-Name"] = entityName;
var stream = webRequest.GetRequestStream();
using (var writer = new System.IO.StreamWriter(webRequest.GetRequestStream()))
{
    writer.Write(json);
}
var webResponse = webRequest.GetResponse();
webResponse.Close();

上面的sn-p允许你将一个有效的JSON文档提交到一个特定的数据库和一个具有指定ID的特定文档集合中。通过 URL 路径执行数据库选择和 ID 指定,并使用元数据标头 Raven-Entity-Name 指定文档集合。

additional metadata headers您可能想发送,例如Raven-Clr-TypeLast-Modified,但它们不是必需的。

【讨论】:

    【解决方案2】:

    我假设您的 json-data 代表您的应用程序域的数据,并且您希望拥有具有属性的类以在您的应用程序中处理该数据,对吗?

    如果是这种情况,您需要编写一个简单的导入应用程序,它会填充您的域模型一次,然后将所有对象存储为常规 RavenDB 文档,就像使用 RavenDB 存储任何其他对象一样。

    这有意义吗?

    【讨论】:

    • 这是有道理的。我最终一直在寻找一种非常快速而肮脏的方法来解决这个问题,但是我越是研究这个,我就越意识到迁移是一种痛苦,而且我现在越专心,我的头痛就越少未来。谢谢!
    猜你喜欢
    • 2018-08-31
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2016-04-02
    相关资源
    最近更新 更多