sql >> データベース >  >> NoSQL >> MongoDB

データベースコマンドを使用して配列内のフィールドの名前を変更するにはどうすればよいですか?

    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
            }
        ]
    })
    

    遊び場

    第二に、よりダイナミックなアプローチのために

    • $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
            }
        ]
    })
    

    遊び場




    1. MongoDBJavaドライバーのMapreduceコマンドスコープの下。スコープに関数を追加する

    2. EVEを使用したRESTAPIの構築

    3. Node.js + Mongoose / Mongo&短縮された_idフィールド

    4. 聞き始めた後の変更だけでなく、最初のドキュメントでMongoDBChangeStreamを再開するにはどうすればよいですか