Требуется обновить значение одного поля всех документов. К сожалению, это поле является ключом для этой коллекции. Например, документы в коллекции выглядят следующим образом:
{
"_id" : ObjectId("5c0763afaabfc3000eb44cc0ss"),
"sensorId" : "someid",
"liftId" : "some-lift-id", //Shared key
"startTimestamp" : NumberLong(1543988140912),
"endTimestamp" : NumberLong(0),
"value" : {}
}
Я хочу обновить значение liftId
до нового значения (новое значение >> prefix-some-lift-id
) во всех документах.
Это то, что я пробовал,
db.getCollection('lift_events').find({}).forEach(
function (elem) {
db.getCollection('lift_events').update(
{
_id: elem._id
},
{
$set: {
liftId: 'prefix-' + elem.liftId
}
}
);
}
);
Но это не удалось, потому что liftId
является ключом шарда для коллекции. Есть ли способ добиться этого для всех шардов без указания ключа шарда?
db.version() : 3.4.6
, и это API-интерфейс Cosmos DB для MongoDB Azure для *