#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
, который, похоже, не содержит уникального индекса.
Убедитесь, что уникальный индекс, который вы создаете, находится в коллекции, в которую объединяются результаты.