mongoDB索引失败

时间:2017-11-12 18:33:33

标签: mongodb indexing

所以我有一个mongoDB实例运行了4个小时(!)索引我的各个领域的数据库。

4小时完成后,它达到了100%,它给了我以下错误:

WiredTigerIndex::insert: key too large to index, failing 1085 { : " 8�o�E���E���E���F���E���F���F���H���H���F���G���G���H..." }

此数据是通过抓取网络自动收集的,因此可能会显示一些意外结果。我知道mongoDB的1024字节索引键限制。然而!在导入代码中,我检查它允许的最大最大字节数,如下所示:

BsonDocument CopyDoc = CurrentDoc;
foreach (void Fs_loopVariable in CurrentDoc("data").AsBsonDocument.ToList()) {
Fs = Fs_loopVariable;
if (System.Text.UTF8Encoding.Unicode.GetMaxByteCount(Fs.Value.AsString.Length) > 1000) {
    CopyDoc("data").Item(Fs.Name) = Fs.Value.AsString.Substring(0, 255);

    Console.WriteLine("Fixed something that was above 1024 bytes.");
    Console.WriteLine("Field: " + Fs.Name);
    Console.WriteLine("Data: " + Fs.Value.AsString);
   }
}

json.Add(CopyDoc);

理论上,没有条目应该高于1024字节,更不用说1000.如果我们找到它们,我们将它截断为255.这是256 - 1(这个字符串,即使完全填充了Unicode字符,仍然会在1024字节)。

我在这里缺少什么?

其次,我怎样才能让它立即报告过长的错误,而不是让我经历4小时的索引构建,知道会失败?

0 个答案:

没有答案