如何拆分大小超过20MB的couchbase文档?返回消息=ValueTooLarge,成功=false Couchbase 3.0.3.net 4.5.1 C#

如何拆分大小超过20MB的couchbase文档?返回消息=ValueTooLarge,成功=false Couchbase 3.0.3.net 4.5.1 C#,c#,couchbase,nosql,C#,Couchbase,Nosql,文档大小超过20MB物理大小,字符数>22000000 请参阅下面的代码 var jsonDataRow = JsonConvert.SerializeXmlNode(objXML, Newtonsoft.Json.Formatting.None, true); var document = new Document<string> { Id = "RR", Content = jsonDataRow }; var upsert =

文档大小超过20MB物理大小,字符数>22000000 请参阅下面的代码

var jsonDataRow = JsonConvert.SerializeXmlNode(objXML, Newtonsoft.Json.Formatting.None, true);
var document = new Document<string>
    {
        Id = "RR",
        Content = jsonDataRow
    };

var upsert = bucket.Upsert(document);
var jsonDataRow=JsonConvert.SerializeXmlNode(objXML,Newtonsoft.Json.Formatting.None,true);
var文档=新文档
{
Id=“RR”,
Content=jsonDataRow
};
var upsert=bucket.upsert(单据);

您需要创建一个包含子文档键的父文档:

{
   "id": "parent_doc_1",
   "children": [ "child_doc1", "child_doc2"]
}
子文档然后单独存储:

{
    "id": "child_doc1",
    "parent_id": "parent_doc_1"
}

然后拉取父文档并获取子密钥(id),然后使用您选择的SDK使用批量获取来获取这些密钥。大概是这样的:

var parent = await bucket.GetAsync<dynamic>("parent_doc_id");
if (parent.Success)
{
   var children = await bucket.GetAsync<dynamic>(parent.Value.children);
   //do stuff
}
var parent=wait bucket.GetAsync(“parent_doc_id”);
如果(父级成功)
{
var children=await bucket.GetAsync(parent.Value.children);
//做事
}

这不是真正的代码,但您应该能够理解这里的想法。

您的文档是什么样子的?你能把它分成更小的部分(参考vs嵌入),然后分别查找各个部分吗?基本上我的文档是嵌入文档。PSB{“索引”:“版本poc”,“类型”:“couchbaseDocument”,“id”:“发票类型”:“发票”,“文件id”:“发票”,“发票id”:“发票类型”:“发票类型”:“发票类型”:“发票行”:[{“文件类型”:“发票行”,“文件id”:“发票行”:“发票行”;…}“发票行”:“单据类型”:“发票行”,“单据ID”:“发票行”\u 94920\u 2“,..]}...}}这里是发票行的“n”号存在1)要求使用嵌入文档。2)它是嵌套文档,在应用程序站点拆分文档也很困难。3)即使拆分文档,如何映射这些文档?
var parent = await bucket.GetAsync<dynamic>("parent_doc_id");
if (parent.Success)
{
   var children = await bucket.GetAsync<dynamic>(parent.Value.children);
   //do stuff
}