MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да преименувам поле в масив с команди за база данни?

  • Грешката гласи $map input на приема референтно поле с помощта на $ знак $version ,
  • оградете u обект в скоба на масив за актуализация с тръбопровод за агрегиране
  • просто поставете и двете полета title и version в $map
  • $unset не се изисква, защото $map ще замени старите данни с нови полета в in
db.runCommand({
    update: 'apps',
    updates: [
        {
            q: { "versions.name": { $exists: true } },
            u: [{
                $set: {
                    versions: {
                        $map: {
                            input: "$versions",
                            in: {
                                "title": "$$this.name",
                                "version": "$$this.version"
                            }
                        }
                    }
                }
            }],
            multi: true
        }
    ]
})

Playground

Втори начин, за по-динамичен подход

  • $mergeObjects вътре в $map , за да предотвратите ръчен списък с двойка ключ-стойности
  • $unset етап за премахване на name поле от version масив
db.runCommand({
    update: 'apps',
    updates: [
        {
            q: { "versions.name": { $exists: true } },
            u: [
              {
                $set: {
                    versions: {
                        $map: {
                            input: "$versions",
                            in: {
                                $mergeObjects: [
                                    "$$this",
                                    { "title": "$$this.name" }
                                ]
                            }
                        }
                    }
                }
              },
              { $unset: "versions.name" }
            ],
            multi: true
        }
    ]
})

Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb:заявете първите няколко реда, където сумата на конкретна колона е по-голяма или равна на C

  2. Изключение за сериализация на Scala със стойност на изброяване

  3. В световен мащаб използвайте JsonConverter за клас без атрибута

  4. MongoDB група за агрегиране на поръчки/продажби Обща сума на месец + Поле за броене

  5. Как мога да редактирам/преименувам ключове по време на json.load в python?