MongoError: не удается найти индекс, чтобы убедиться, что поля соединения будут уникальными

#mongodb #mongoose #mongodb-query #aggregation-framework

#mongodb #мангуст #mongodb-запрос #агрегация-фреймворк

Вопрос:

Я хочу вставить агрегированный результат в некоторую коллекцию. И в выходной коллекции один столбец имеет уникальный индекс, я делаю все это в mongoose.

 await mongoose.connection.collections['inputcollection'].createIndexes({ "uniquecolumnname": 1 }, { "unique": true});

await inputcollection.aggregate(([{ "$addFields": {"uniquecolumnname": "$username"} }, { $merge: { into: "outputcollection", on: "uniquecolumnname", whenMatched: "replace", whenNotMatched: "insert" } }])).exec();
  

Но я получаю ошибку MongoError: не удается найти индекс, чтобы убедиться, что поля соединения будут уникальными

Комментарии:

1. Вы нашли решение этой проблемы?

Ответ №1:

Из вашей первой команды похоже, что вы создаете индекс на inputcollection , но вы пытаетесь объединить результат с вашим outputcollection , который, похоже, не содержит уникального индекса.

Убедитесь, что уникальный индекс, который вы создаете, находится в коллекции, в которую объединяются результаты.