Не удается вставить / обновить после миграции Azure Cosmos MongoDB - PullRequest
0 голосов
/ 26 марта 2019

У меня возникла проблема после переноса БД Cosmos Mongo в новую БД Cosmos Mongo.После того, как я успешно мигрировал и пытался обновить элемент в коллекции, я получаю эту ошибку:

MongoError: query in command must target a single shard key

Впервые я вижу эту ошибку.Чтение данных не является проблемой, но обновление больше не работает.

Например:

// Update suit
exports.update_suit = function (req, res, next) { 
  Suit.updateOne({
    id: req.params.id,
}, {
    $set: req.body
}, function (err, suit) {
    if (err) return next(err);
    res.send("Suit has been updated");
})
};

Это шаме для вышеперечисленного:

let SuitSchema = new Schema({
type: {type: String},
size: {type: String},
shoeSize: {type: String},
id: {type: String, unique: true, required: true},
location: {type: ObjectId}, 
status: {type: String},
nextService: {type: Date},
lastService: {type: Date},
condition: {type: String},
assignedTo: {type: Object, default: {}},
comment: {type: String},
make: {type: String},
model: {type: String},
suitType: {type:ObjectId},
year:{type: String},
vessel:{type: String},
guestSuit: {type: Boolean, default: false},
decomissioningReason: {type: ObjectId},
checkOutComment: {type: String},
inUseTempComment: {type: String},
}

ЗдесьЯ использовал другой идентификатор, чем ObjectID.Это работало просто отлично до окончания миграции.

Есть ли способ отключить шардинг или как-то иначе это исправить?

1 Ответ

0 голосов
/ 27 марта 2019

Согласно комментариям, вы использовали Data Migration Tool , который предназначен для перехода на учетные записи SQL API.

Официальные документы говорят:

Средство переноса данных в настоящее время не поддерживает API Azure Cosmos DB для MongoDB в качестве источника или цели. Если вы хотите перенести данные в или из коллекций в Azure Cosmos DB, обратитесь к инструкции Как перенести данные MongoDB в базу данных Cosmos с API Azure Cosmos DB для MongoDB. Вы все еще можете использовать инструмент переноса данных, чтобы экспортировать данные из MongoDB в коллекции API SQL Azure Cosmos DB для использования с API SQL.

Правильный способ сделать это - следовать предложенному решению: https://docs.microsoft.com/azure/dms/tutorial-mongodb-cosmos-db

Другой альтернативой может быть использование mongoimport и mongorestore.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...