Nano Hash - криптовалюты, майнинг, программирование

MongoDB: как установить новое поле равным значению другого поля для каждого документа в коллекции

Мне нужно запустить сценарий миграции, чтобы вставить значение (уже доступное в каждом документе) в массив этого же документа. Это необходимо сделать для каждого документа моей коллекции (запрос выбора не требуется)

Как это изменить:

{
    "_id": ObjectID("5649a7f1184ebc59094bd8b3"),
    "alternativeOrganizer": ObjectID("5649a7f1184ebc59094bd8b1"),
    "myArray": []
}

В это:

{
    "_id": ObjectID("5649a7f1184ebc59094bd8b3"),
    "alternativeOrganizer": ObjectID("5649a7f1184ebc59094bd8b3"),
    "myArray": [
         ObjectID("5649a7f1184ebc59094bd8b3")
    ]
}

Заранее спасибо.

19.08.2016

  • Могу ли я узнать, в чем проблема в приведенном ниже решении? Я неправильно понял? Насколько я понимаю, вы хотели обновить существующие записи в образце, как уже упоминалось? 19.08.2016
  • Кто когда-либо голосовал против, не могли бы вы также объяснить? Что не так в ответе? Нам не поможет только голосование против. 19.08.2016
  • db.s.find().forEach(функция(obj){var id = obj._id;db.s.update({_id:id},{$push:{myArray:id}})}) 19.08.2016

Ответы:


1

Я бы использовал forEach и $addToSet, чтобы сценарий можно было выполнять повторно.

Оператор $addToSet добавляет значение в массив, если это значение уже не присутствует, и в этом случае $addToSet ничего не делает с этим массивом.

db.collectionname.find().forEach(function(results)
{    
    print( "Id: " + results._id );
    db.collectionname.update( {_id : results._id},
                       {$addToSet : {myArray : results._id}})
});
19.08.2016
  • Именно то, что мне нужно. Спасибо. 19.08.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..