【发布时间】:2016-09-07 02:11:31
【问题描述】:
我有一份表格文件
{
itemId: SomeInteger
.... A bunch of other stuff
IndexedArrayOfStrings: [string1, string2, etc]
}
IndexedArrayOfStrings 上有一个索引。我有一些字符串很长,以至于它们破坏了索引中项目的最大大小为 1024 字节。通常,我会通过将项目转换为 BSON 来测试这一点,并测试字符串的长度。但是,当我尝试将字符串转换为 BSON 时,出现以下错误:
byte[] payload = doc.IndexedArrayOfStrings[0].ToBson();
System.InvalidOperationException : A String value cannot be written to the root level of a BSON document.
我最好的估计大小的尝试是使用以下代码来获取 bson:
byte[] payload = new {IndexedArrayOfStrings = doc.IndexedArrayOfStrings}.ToBson();
这给我的不仅仅是一个字符串。长度为 1012 的重复“a”字符串具有长度为 1051 的 bson,并且有效负载的长度会有所不同,具体取决于属性的名称。无论属性名称如何,索引失败时字符串的最大长度都是相同的。在这个简单的字符串中,可以索引的最大字符串是 1012,但是 UTF-16 字符串的二进制长度与其人类可读长度并不完全成正比。
在将索引值发送到 Mongo 之前,有没有更好的方法来预测索引值的长度?
【问题讨论】:
标签: c# mongodb mongodb-.net-driver bson