Estoy usando Mongodb en mi aplicación. Es la versión 4.4.1 . He establecido la opción única en el campo de palabras como verdadera.
Y uso este código:
try { const words = [ { word: "her" }, { word: "her" }, { word: "gathered" }, { word: "together" }, { word: "and" }, { word: "rather" }, ]; const result = await wordsDb .collection .insertMany(words, { ordered: false }); console.log(result.insertedCount); // nothing to console } catch (error) { console.log(error.message); // E11000 duplicate key error index: word_1 dup key: { word: "her" } }Todavía da el "error de clave duplicada". ¿Por qué está pasando? Gracias.
Si establece una restricción unique en el campo de word , no puede insertar en la colección 2 documentos con el mismo valor ('ella') para el campo de word .
Y no puede omitir la restricción con la opción {ordered: true} .
De hecho, arrojar el error no significa que no se inserten otros documentos. ¿Comprobaste si estaban insertados? Si pruebo con un ejemplo similar al tuyo (no en Node sino en MongoDb Compass ), también me sale el error, pero los documentos están todos insertados en la colección (excepto el que tiene la clave duplicada, obviamente, que se inserta solo una vez).
Además, considere que el error de inserción arrojado hace que el código salte inmediatamente al bloque catch(error) , por lo que no se puede mostrar su console.log(result.insertedCount) .