MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để đổi tên một trường bên trong một mảng bằng các lệnh cơ sở dữ liệu?

  • Lỗi cho biết $map input của chấp nhận trường tham chiếu bằng $ ký tên $version ,
  • gửi kèm theo u đối tượng trong dấu ngoặc nhọn mảng cho cập nhật với một đường ống tổng hợp
  • chỉ cần đặt cả hai trường titleversion trong $map
  • $unset không bắt buộc vì $map sẽ thay thế dữ liệu cũ bằng các trường mới trong 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
        }
    ]
})

Sân chơi

Cách thứ hai, Để có cách tiếp cận năng động hơn

  • $mergeObjects bên trong $map , để ngăn danh sách thủ công của cặp khóa-giá trị
  • $unset giai đoạn xóa name trường từ version mảng
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
        }
    ]
})

Sân chơi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn trên siêu dữ liệu MongoDB GridFS (Java)

  2. Nghe các sự kiện kết nối lại trong trình điều khiển MongoDB

  3. Thêm trình xác thực vào bộ sưu tập Mongodb bằng pymongo

  4. Chỉ hiển thị các trường phù hợp cho tìm kiếm văn bản MongoDB

  5. Mongoose cư trú sau khi lưu