У меня в mongoDB около 20 коллекций. Один документ в одной коллекции имеет некоторую связь / связь с документом в другой коллекции. У нас есть одно общее поле "executionId": "какое-то старое значение" во всех документах коллекций. коллекция может иметь один или несколько документов
Я хочу перебрать всю коллекцию, и если какой-либо документ соответствует "executionId": "некоторому старому значению" , то я хочу скопировать этот документ и создать новый документ с новым значением "executionId": "какое-то новое значение" в той же коллекции.
Я хочу повторить это для всей коллекции в моем mongoDB.
Например. Ниже моя коллекция
collection_one
{
"_id" : ObjectId("5ef615b87127ee8d00229473"),
"executionId" : "some old value",
"application" : "app1",
"status" : "Started"
}
collection_two
{
"_id" : ObjectId("5ef615b87127ee8d00229455"),
"executionId" : "some old value",
"isOrder" : false,
"form" : false,
"officerNumber" : "T643",
"phoneNumber" : "0482",
"createdDate" : ISODate("2020-06-26T15:35:20.889Z"),
"lastModifiedDate" : ISODate("2020-06-26T15:35:25.045Z")
}
collection_three
{
"_id" : ObjectId("5ef615b87127ee8d00229466"),
"executionId" : "some old value",
"application" : "app1",
"country" : "country"
}
После выполнения запроса на обновление в приглашении оболочки. Я хочу, чтобы они выглядели вот так.
collection_one
{
"_id" : ObjectId("5ef615b87127ee8d00229473"),
"executionId" : "some new value",
"application" : "app1",
"status" : "Started"
}
collection_two
{
"_id" : ObjectId("5ef615b87127ee8d00229455"),
"executionId" : "some new value",
"isOrder" : false,
"form" : false,
"officerNumber" : "T643",
"phoneNumber" : "0482",
"createdDate" : ISODate("2020-06-26T15:35:20.889Z"),
"lastModifiedDate" : ISODate("2020-06-26T15:35:25.045Z")
}
collection_three
{
"_id" : ObjectId("5ef615b87127ee8d00229466"),
"executionId" : "some new value",
"application" : "app1",
"country" : "country"
}
1 ответ
Для этого вы можете использовать updateMany.
db.collectionName.updateMany(
{ executionId: 'some old value' },
{ $set: { executionId : 'some new value'} }
);
Поскольку вы хотите сделать это для всех коллекций в своей базе данных, вы можете попробовать следующее:
db.getCollectionNames().forEach(collection => {
db[collection].updateMany({ executionId: 'some old value' }, { $set: { executionId : 'some new value'} })
});
Похожие вопросы
Новые вопросы
mongodb
MongoDB - это масштабируемая, высокопроизводительная база данных NoSQL с открытым исходным кодом, ориентированная на документы. Он поддерживает большое количество языков и платформ разработки приложений. Вопросы по администрированию сервера можно задать на https://dba.stackexchange.com.