Cập nhật MongoDB bởi _id

Sử dụng phương pháp

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
3 để cập nhật một tài liệu trong bộ sưu tập phù hợp với tiêu chí lọc đã chỉ định. Nó cập nhật tài liệu phù hợp đầu tiên ngay cả khi nhiều tài liệu phù hợp với tiêu chí

cú pháp

db.collection.updateOne(filter, document, options)

Thông số

  1. lọc. Tiêu chí lựa chọn cho bản cập nhật, giống như phương thức find()
  2. tài liệu. Một tài liệu hoặc quy trình có chứa các sửa đổi để áp dụng
  3. tùy chọn. Không bắt buộc. Có thể chứa các tùy chọn cho hành vi cập nhật. Nó bao gồm upsert, writeConcern, đối chiếu, v.v.

Trong cú pháp trên,

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
4 trỏ đến cơ sở dữ liệu hiện tại,
db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
5 điểm là tên bộ sưu tập hiện có

Để minh họa thao tác cập nhật, hãy chèn các tài liệu mẫu sau vào bộ sưu tập

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
6

Dữ liệu mẫu

Sao chép

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000
    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500
    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])

Cập nhật một trường đơn

Sau đây cập nhật một trường duy nhất trong một tài liệu duy nhất trong bộ sưu tập

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
6

Ví dụ. cập nhậtOne()

Sao chép

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 

đầu ra

________số 8_______

Trong ví dụ trên, tham số đầu tiên là tiêu chí lọc được chỉ định dưới dạng tài liệu,

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
8 cho biết rằng tìm tài liệu có
db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
9 là 1. Tham số thứ hai được sử dụng để chỉ định các trường và giá trị sẽ được sửa đổi trên tài liệu phù hợp ở định dạng
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
0. Sử dụng toán tử cập nhật để chỉ định hành động cần thực hiện. Ở đây chúng tôi muốn đặt giá trị của một trường, vì vậy hãy sử dụng toán tử
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
1 để chỉ định các trường và giá trị được cập nhật ở định dạng
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
2.
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
3 sửa đổi
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
4 thành
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
5 thành tài liệu đầu tiên phù hợp với tiêu chí được chỉ định
db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
8

Ở đầu ra,

{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
7 cho biết số lượng tài liệu phù hợp với tiêu chí và
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
8 cho biết số lượng tài liệu được cập nhật. Phương pháp
db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
2 sẽ luôn sửa đổi một tài liệu

Bây giờ, hãy kiểm tra xem nó đã cập nhật một giá trị hay chưa bằng cách sử dụng phương pháp

db.employees.find({_id:1}) 
0 được hiển thị bên dưới

Kiểm tra tài liệu cập nhật

Sao chép

db.employees.find({_id:1}) 

đầu ra

{
  _id: 1,
  firstName: 'Morgan',
  lastName: 'King',
  email: '[email protected]',
  salary: 5000
}

Phương pháp

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
2 thêm trường được chỉ định nếu nó không tồn tại trong tài liệu phù hợp. Ví dụ: phần sau sẽ thêm trường
db.employees.find({_id:1}) 
2

Ví dụ. cập nhậtOne()

Sao chép

db.employees.updateOne({firstName:"Steve"}, { $set: {location: "USA"}}) 

đầu ra

________số 8_______

Thực hiện phương thức

db.employees.find({_id:1}) 
3 sau để xem dữ liệu được cập nhật

Kiểm tra tài liệu cập nhật

Sao chép

db.employees.find({firstName:"Steve"}) 

đầu ra

{ 
    _id:4,
    firstName: "Steve",
    lastName: "J",
    email: "[email protected]",
    salary: 7000,
    location:"USA"
}

Sử dụng toán tử cập nhật

db.employees.find({_id:1}) 
4 để tăng giá trị của trường theo số lượng đã chỉ định

Ví dụ. toán tử $inc

Sao chép

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000
    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500
    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])
0

đầu ra

________số 8_______

Thực hiện phương thức

db.employees.find({_id:1}) 
3 sau để xem dữ liệu được cập nhật

Kiểm tra tài liệu cập nhật

Sao chép

db.employees.find({firstName:"Steve"}) 

đầu ra

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000
    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500
    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])
3

Cập nhật nhiều trường

Bạn cũng có thể chỉ định nhiều trường để cập nhật. Các cập nhật sau các trường

db.employees.find({_id:1}) 
6 và
db.employees.find({_id:1}) 
7

Ví dụ. Cập nhật nhiều trường

Sao chép

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000
    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500
    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])
4

đầu ra

________số 8_______

Thực hiện phương thức

db.employees.find({_id:1}) 
3 sau để xem dữ liệu được cập nhật

Kiểm tra tài liệu cập nhật

Sao chép

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000
    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500
    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])
6

đầu ra

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000
    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500
    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])
7

Phương thức

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
2 chỉ cập nhật một tài liệu duy nhất, ngay cả khi nó tìm thấy nhiều tài liệu. Ví dụ: phần sau cập nhật tài liệu đầu tiên ngay cả khi nó trả về nhiều tài liệu

Ví dụ. cập nhậtOne()

Sao chép

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        email: "[email protected]",
        salary: 5000
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        email: "[email protected]",
        salary: 8000
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        email: "[email protected]",
        salary: 7500
    },
    { 
        _id:4,
        firstName: "Steve",
        lastName: "J",
        email: "[email protected]",
        salary: 7000
    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        email: "[email protected]",
        salary: 4500
    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        email: "[email protected]",
        salary: 7000
    }
])
8

đầu ra

________số 8_______

Trong ví dụ trên, bộ sưu tập

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
6 chứa hai tài liệu có trường
{
  _id: 1,
  firstName: 'Morgan',
  lastName: 'King',
  email: '[email protected]',
  salary: 5000
}
1. Tuy nhiên,
db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
2 đã sửa đổi một tài liệu duy nhất, đây là tài liệu đầu tiên từ kết quả khớp

Upsert - Thêm nếu không tồn tại

Chỉ định

{
  _id: 1,
  firstName: 'Morgan',
  lastName: 'King',
  email: '[email protected]',
  salary: 5000
}
3 làm tham số thứ ba trong phương thức
{
  _id: 1,
  firstName: 'Morgan',
  lastName: 'King',
  email: '[email protected]',
  salary: 5000
}
4.
{
  _id: 1,
  firstName: 'Morgan',
  lastName: 'King',
  email: '[email protected]',
  salary: 5000
}
5 thêm một tài liệu mới nếu không tìm thấy tài liệu phù hợp

Ví dụ. Upsert

Sao chép

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
0

đầu ra

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
1

Trong ví dụ trên, MongoDB thêm một tài liệu mới với _______9 mới, bởi vì nó không thể tìm thấy một tài liệu với _____23_______7

Cập nhật toán tử

Bảng sau đây liệt kê các toán tử cập nhật có thể được sử dụng với các phương thức

db.employees.updateOne({_id:1}, { $set: {firstName:'Morgan'}}) 
2 và
{
  _id: 1,
  firstName: 'Morgan',
  lastName: 'King',
  email: '[email protected]',
  salary: 5000
}
9

MethodDescription$currentDateĐặt giá trị của một trường thành ngày hiện tại, dưới dạng Ngày hoặc Dấu thời gian. $incTăng giá trị của trường theo số lượng đã chỉ định. $minChỉ cập nhật trường nếu giá trị đã chỉ định nhỏ hơn giá trị trường hiện có. $maxOnly cập nhật trường nếu giá trị được chỉ định lớn hơn giá trị trường hiện tại. $mulNhân giá trị của trường với số lượng đã chỉ định. $renameĐổi tên trường. $setĐặt giá trị của một trường trong tài liệu. $setOnInsertĐặt giá trị của trường nếu một bản cập nhật dẫn đến việc chèn tài liệu. Không ảnh hưởng đến các hoạt động cập nhật sửa đổi các tài liệu hiện có. $unsetXóa trường đã chỉ định khỏi tài liệu

Làm cách nào để cập nhật bằng _id trong MongoDB?

Làm cách nào để cập nhật _id của Tài liệu MongoDB? .
Bước 1. Ở bước đầu tiên, bạn cần lưu trữ ObjectId vào một biến
Bước 2. Trong bước thứ hai, bạn cần đặt id mới
Bước 3. Ở bước thứ ba, bạn cần chèn id mới vào tài liệu
Bước 4. Ở bước thứ tư, bạn cần xóa id cũ

Tôi có nên sử dụng _id trong MongoDB không?

Trường _id MongoDB là nền tảng cho mọi bộ sưu tập trong MongoDB và theo mặc định, trường này có một số thuộc tính hữu ích mà người dùng có thể tận dụng khi quen với cách tạo _id.

Trường _id trong MongoDB là gì?

Trường _id . Nếu một tài liệu được chèn bỏ qua trường _id, trình điều khiển MongoDB sẽ tự động tạo một ObjectId cho trường _id. each document stored in a collection requires a unique _id field that acts as a primary key. If an inserted document omits the _id field, the MongoDB driver automatically generates an ObjectId for the _id field.

Sự khác biệt giữa _id và ID là gì?

Có thể hiểu sự khác biệt bằng cách làm theo, Trường _id là khóa chính cho mọi tài liệu. Nó được gọi là _id và cũng có thể truy cập thông qua id . Cố gắng sử dụng khóa id có thể dẫn đến lỗi định dạng ObjectId không hợp lệ.