Làm cách nào để sử dụng đổi tên trong MongoDB?

MongoDB cung cấp nhiều toán tử cập nhật trường để cập nhật giá trị của các trường. Toán tử $rename là một trong những toán tử đó. Toán tử $rename được sử dụng để thay đổi tên của một trường. Tên mới của trường phải khác với tên cũ của trường

Điểm quan trọng

  1. Toán tử $rename thực hiện thao tác $unset trên cả tên cũ và tên mới trước khi thực hiện thao tác $set trên tên mới
  2. Nó cũng có thể hoạt động với mảng hoặc tài liệu lồng nhau
  3. Theo yêu cầu của bạn, bạn có thể sử dụng toán tử này trong findAndModify(), like(), update(), v.v.
  4. Nếu trường đã cho không tồn tại để đổi tên trong tài liệu, thì toán tử $rename không làm gì cả

Cú pháp của toán tử $rename

ví dụ

Trong các ví dụ sau, chúng tôi đang làm việc với

>db.employees.find().pretty()
        {
                "_id" : 1,
                "employee_name" : "Tin",
                "father_name" : "Thor",
                "department" : "Tester",
                "address" : "London",
                "joinning" : 2020,
                "phone_no" : 9856321478,
                "gender" : "Male",
                "age" : 20,
                "salary" : 10000
        }
        {
                "_id" : 2,
                "employee_name" : "John",
                "father_name" : "Mick",
                "department" : "Tester",
                "address" : "NewYork",
                "joining" : 2015,
                "phone_no" : 7896541478,
                "gender" : "Male",
                "age" : 23,
                "salary" : 20000,
                "report_lastDate" : ISODate("2021-08-05T00:00:00Z") 
        }
        {
                "_id" : 3,
                "employee_name" : "Ammy john",
                "father_name" : "John",
                "department" : "Software developer",
                "address" : "London",
                "joining" : 2019,
                "phone_no" : 7985631478,
                "gender" : "Female",
                "age" : 26,
                "salary" : 15000
        }
        {
                "_id" : 4,
                "employee_name" : "Reeza",
                "father_name" : "Reeza Hendricks",
                "department" : "Tester",
                "address" : "USA",
                "joining" : 2020,
                "phone_no" : 7412563278,
                "gender" : "Male",
                "age" : 22,
                "salary" : 20000
        }
        { 
                "_id" : 5,
                "employee_name" : "John Lewis",
                "father_name" : "Lewis",
                "department" : "Software developer",
                "address" : "London",
                "joining" : 2015,
                "phone_no" : 9632587418,
                "gender" : "Male",
                "age" : 25,
                "salary" : 25000,
        }
        {
                "_id" : 6,
                "employee_name" : "Temba",
                "father_name" : "George",
                "department" : "Tester",
                "address" : "NewYork",
                "joining" : 2018,
                "phone_no" : 8965247418,
                "gender" : "Male",
                "age" : 24,
                "salary" : {
                             "first_month" : 15000,
                             "second_month" : 18000,
                             "bonus" : 2000
                           }
        }

ví dụ 1. Đổi tên một trường duy nhất

Trong ví dụ này, chúng tôi đang đổi tên của "tiền lương. trường_tháng_đầu tiên" thành "lương. tháng" trong tài liệu nhân viên có employee_name là Temba

Toán tử $rename được sử dụng để cập nhật tên của một trường. Cần phải đề cập đến tên trường mới khác với tên trường hiện có

cú pháp

{$rename: { : , : , .. } }

Thông số

TênMô tảold_name1,old_name2tên cũ của cột hoặc trườngnew_name1,new_name2tên mới của cột hoặc trường

Tên cơ sở dữ liệu của chúng tôi là 'myinfo' và tên bộ sưu tập của chúng tôi là "nhân viên". Đây, là bộ sưu tập dưới đây

Bộ sưu tập mẫu "nhân viên"

{
        "_id" : 2,
        "emp_id" : 1232,
        "pinfo" : {
                "empfname" : "Robart",
                "emplname" : "Bolt"
        },
        "phno" : "123-123-1235",
        "emale" : "[email protected]",
        "offinfo" : [
                "administration",
                "MD"
        ]
}
}

Ví dụ về toán tử cập nhật trường - $rename

Nếu chúng ta muốn thay đổi tên trường offinfo thành service_details và emale thành email, có thể sử dụng câu lệnh mongodb sau

> db.employee.update( { emp_id: 1232 }, { $rename: { 'offinfo': 'service_details', 'emale': 'email' } } );

Để xem đầu ra được cập nhật -

> db.employee.find().pretty();

N. B. Phương thức find() hiển thị các tài liệu ở định dạng không có cấu trúc nhưng để hiển thị kết quả theo cách được định dạng, có thể sử dụng phương thức pretty()

Đầu ra của lệnh

{
        "_id" : 2,
        "email" : "[email protected]",
        "emp_id" : 1232,
        "phno" : "123-123-1235",
        "pinfo" : {
                "empfname" : "Robart",
                "emplname" : "Bolt"
        },
        "service_details" : [
                "administration",
                "MD"
        ]
}

Ví dụ về $rename để đổi tên tài liệu phụ

Nếu chúng tôi muốn đổi tên pinfo tài liệu phụ, có thể sử dụng các truy vấn mongodb sau -

> db.employee.update( { emp_id: 1232 }, { $rename: { 'pinfo': 'personal'} } );

Để xem đầu ra được cập nhật -

> db.employee.find().pretty();

N. B. Phương thức find() hiển thị các tài liệu ở định dạng không có cấu trúc nhưng để hiển thị kết quả theo cách được định dạng, có thể sử dụng phương thức pretty()

Đầu ra của lệnh

________số 8_______

Ví dụ về toán tử $rename để đổi tên trường trong tài liệu con

Nếu chúng ta muốn đổi tên trường empfname bằng fname trong tài liệu con cá nhân, có thể sử dụng lệnh mongodb sau -

> db.employee.update( { emp_id: 1232 }, { $rename: { "personal.empfname": "personal.fname"} } );

Ở đây trong ví dụ trên, để đổi tên trường empfname trong tài liệu phụ personal, toán tử $rename đã được sử dụng với ký hiệu dấu chấm để đảm bảo trường vẫn còn trong tài liệu phụ

Để xem đầu ra được cập nhật -

> db.employee.find().pretty();

N. B. Phương thức find() hiển thị các tài liệu ở định dạng không có cấu trúc nhưng để hiển thị kết quả theo cách được định dạng, có thể sử dụng phương thức pretty()

Đầu ra của lệnh

{
        "_id" : 2,
        "emp_id" : 1232,
        "pinfo" : {
                "empfname" : "Robart",
                "emplname" : "Bolt"
        },
        "phno" : "123-123-1235",
        "emale" : "[email protected]",
        "offinfo" : [
                "administration",
                "MD"
        ]
}
}

0

Ví dụ về toán tử $rename để đổi tên trường và di chuyển nó sang tài liệu con khác

Nếu chúng tôi muốn đổi tên trường emplname thành last_name của tài liệu phụ cá nhân và di chuyển nó từ tài liệu phụ cá nhân, có thể sử dụng lệnh mongodb sau đây -

{
        "_id" : 2,
        "emp_id" : 1232,
        "pinfo" : {
                "empfname" : "Robart",
                "emplname" : "Bolt"
        },
        "phno" : "123-123-1235",
        "emale" : "[email protected]",
        "offinfo" : [
                "administration",
                "MD"
        ]
}
}

1

Ở đây trong ví dụ trên, để đổi tên trường emplname trong tài liệu con cá nhân, toán tử $rename đã được sử dụng với ký hiệu dấu chấm để đảm bảo trường vẫn còn trong tài liệu con và thao tác này đổi tên trường tài liệu con emplname thành

Nếu không có tên tài liệu phụ nào được bao gồm trong tên trường mới, thì trường đó sẽ trở thành trường tài liệu thông thường

Để xem đầu ra được cập nhật -

> db.employee.find().pretty();

N. B. Phương thức find() hiển thị các tài liệu ở định dạng không có cấu trúc nhưng để hiển thị kết quả theo cách được định dạng, có thể sử dụng phương thức pretty()

Đầu ra của lệnh

{
        "_id" : 2,
        "emp_id" : 1232,
        "pinfo" : {
                "empfname" : "Robart",
                "emplname" : "Bolt"
        },
        "phno" : "123-123-1235",
        "emale" : "[email protected]",
        "offinfo" : [
                "administration",
                "MD"
        ]
}
}

3

Thí dụ

Tại thời điểm đổi tên trường, Nếu trường không tồn tại trong tài liệu, thao tác đổi tên sẽ không thực hiện được

Đây là ví dụ -

{
        "_id" : 2,
        "emp_id" : 1232,
        "pinfo" : {
                "empfname" : "Robart",
                "emplname" : "Bolt"
        },
        "phno" : "123-123-1235",
        "emale" : "[email protected]",
        "offinfo" : [
                "administration",
                "MD"
        ]
}
}

4

Ở đây trong ví dụ trên, chúng tôi muốn đổi tên trường thành phố thành thị trấn, nhưng trường thành phố không tồn tại trong tài liệu, vì vậy thao tác này sẽ không thực hiện được. Như vậy, nếu chúng ta muốn đổi tên nhiều trường và nếu tất cả các trường đó không tồn tại trong tài liệu thì thao tác sẽ không thực hiện được

Làm cách nào để đổi tên MongoDB?

MongoDB – Đổi tên toán tử ($rename) . Toán tử $rename trước tiên thực hiện thao tác $unset trên cả tên cũ và tên mới một cách hợp lý, sau đó thực hiện thao tác $set với tên mới .

Chúng tôi có thể đổi tên bộ sưu tập trong MongoDB không?

Trong MongoDB, bạn có thể sử dụng phương thức renameCollection() để đổi tên hoặc thay đổi tên của bộ sưu tập hiện có . Tên mới của bộ sưu tập. Tùy chọn, nếu đúng thì mongod bỏ mục tiêu đổi tênCollection cũ để đổi tên bộ sưu tập. Giá trị mặc định là sai.

Làm cách nào để xác định tên trường trong MongoDB?

Tài liệu nhúng. Để chỉ định trường có tên cuối cùng trong trường tên, hãy sử dụng ký hiệu dấu chấm "tên. cuối cùng" . Để chỉ định số trong tài liệu điện thoại trong trường liên hệ, hãy sử dụng ký hiệu dấu chấm "liên hệ.

Làm cách nào để thay đổi giá trị khóa trong MongoDB?

Bạn phải bao gồm một điều kiện bình đẳng trên khóa phân đoạn đầy đủ trong bộ lọc truy vấn. Ví dụ: xem xét bộ sưu tập thư sử dụng { activityid. 1, người dùng. 1 } làm khóa phân đoạn. Để cập nhật giá trị khóa phân đoạn cho tài liệu, bạn phải bao gồm Activityid. .