2016-08-07 27 views
1

Ich habe eine MongoDB-Sammlung.MongoDB Ausnahme: WiredTigerIndex :: einfügen: Schlüssel zu groß zum Index

Ich möchte die Indexierung ändern, um einen doppelten Index zu haben, anstatt eine einzige. So

Ich lief:

db.allnews.ensureIndex({ "url": 1, "source": 1 }, { unique: true }) 

Aber dann bekomme ich den Fehler:

exception: WiredTigerIndex::insert: key too large to index 

Und die Grenze ist 1024 Bytes

Was ist also die Lösung ...?

(1) Ignorieren Sie es irgendwie .. irgendwie überspringen diese Datensätze, die zu lang sind, ohne den gesamten Prozess zu stoppen ..?

--setParameter failIndexKeyTooLong=false 

?? Könnte das den Trick machen ...?

(2) Finden Sie die Datensätze, die zu lang sind, durch irgendeine Art von Abfrage, und verkürzen sie ..?

(3) Etwas anderes ..?

Antwort

2

OK, ich habe mein Problem gelöst.

Run this:

db.getSiblingDB('admin').runCommand({ setParameter: 1, failIndexKeyTooLong: false }) 

Dann können Sie Ihre Dual-Index erstellen, ohne dass es einen Fehler werfen

db.getCollection("allnews").ensureIndex({ "url": 1, "source": 1 }, { unique: true }) 
0

Ihre Antwort mir helfen, aber auch fand ich eine andere Lösung, falls Sie dies nicht tun Informationen verlieren wollen, können Sie das Feld teilen, wie von Rustem K in Cannot create index in mongodb, "key too large to index"

vorgeschlagen Ich hoffe, dass dies in einem anderen Szenario hilft.

+0

Ihre "Antwort" in ihrer aktuellen Form ist kaum eine Antwort, bitte geben Sie den entsprechenden Code an und erläutern Sie, warum das Problem möglicherweise gelöst werden kann. – milo526