Thêm thuộc tính vào đối tượng mongodb

Bạn có thể sử dụng lệnh cập nhật cùng với forEach() cho bộ sưu tập lớn. Trước tiên chúng ta hãy tạo một bộ sưu tập với các tài liệu

>db.addingNewPropertyDemo.insertOne({"StudentName":"John","StudentAge":23,"CountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ca1e61866324ffac2a7dc56")
}
>db.addingNewPropertyDemo.insertOne({"StudentName":"David","StudentAge":21,"CountryName":"AUS"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ca1e62366324ffac2a7dc57")
}
>db.addingNewPropertyDemo.insertOne({"StudentName":"Bob","StudentAge":21,"CountryName":"UK"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ca1e62d66324ffac2a7dc58")
}

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find()

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

Điều này sẽ tạo ra đầu ra sau

{
   "_id" : ObjectId("5ca1e61866324ffac2a7dc56"),
   "StudentName" : "John",
   "StudentAge" : 23,
   "CountryName" : "US"
}
{
   "_id" : ObjectId("5ca1e62366324ffac2a7dc57"),
   "StudentName" : "David",
   "StudentAge" : 21,
   "CountryName" : "AUS"
}
{
   "_id" : ObjectId("5ca1e62d66324ffac2a7dc58"),
   "StudentName" : "Bob",
   "StudentAge" : 21,
   "CountryName" : "UK"
}

Sau đây là truy vấn để thêm thuộc tính mới vào mỗi tài liệu trong một bộ sưu tập lớn

> db.addingNewPropertyDemo.find().forEach(function(data){ db.addingNewPropertyDemo.update({_id: data._id}, {$set: { StudentNameInUpperCase: data.StudentName.toUpperCase() }}) });

Hãy để chúng tôi kiểm tra một tài sản mới được thêm vào hay không

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

Sau đây là đầu ra cũng hiển thị thuộc tính mới

{
   "_id" : ObjectId("5ca1e61866324ffac2a7dc56"),
   "StudentName" : "John",
   "StudentAge" : 23,
   "CountryName" : "US",
   "StudentNameInUpperCase" : "JOHN"
}
{
   "_id" : ObjectId("5ca1e62366324ffac2a7dc57"),
   "StudentName" : "David",
   "StudentAge" : 21,
   "CountryName" : "AUS",
   "StudentNameInUpperCase" : "DAVID"
}
{
   "_id" : ObjectId("5ca1e62d66324ffac2a7dc58"),
   "StudentName" : "Bob",
   "StudentAge" : 21,
   "CountryName" : "UK",
   "StudentNameInUpperCase" : "BOB"
}

Nhìn vào đầu ra mẫu ở trên, thuộc tính StudentNameInUpperCase được thêm vào

Toán tử delete được thiết kế để sử dụng trên các thuộc tính của đối tượng. Nó không ảnh hưởng đến các biến hoặc chức năng

Không nên sử dụng toán tử delete trên các thuộc tính đối tượng JavaScript được xác định trước. Nó có thể làm hỏng ứng dụng của bạn


Đối tượng lồng nhau

Các giá trị trong một đối tượng có thể là một đối tượng khác

Thí dụ

myObj = {
Tên. "John",
tuổi. 30,
ô tô. {
xe1. "Ford",
xe2. "XE BMW",
xe3. "Xin vâng"
}
}

Bạn có thể truy cập các đối tượng lồng nhau bằng ký hiệu dấu chấm hoặc ký hiệu dấu ngoặc

hoặc là

hoặc là

hoặc là


Mảng và đối tượng lồng nhau

Giá trị trong đối tượng có thể là mảng và giá trị trong mảng có thể là đối tượng

Thí dụ

const myObj = {
Tên. "John",
tuổi. 30,
ô tô. [
{Tên. "Ford", người mẫu. ["Fiesta", "Focus", "Mustang"]},
{Tên. "BMW", người mẫu. ["320", "X3", "X5"]},
{Tên. "Fiat", người mẫu. ["500", "Gấu trúc"]}
]
}

Để truy cập các mảng bên trong mảng, hãy sử dụng vòng lặp for-in cho mỗi mảng

Thí dụ

cho (hãy để tôi trong myObj. ô tô) {
x += "

" + myObj. ô tô [tôi]. tên + "";
cho (đặt j trong myObj. ô tô [tôi]. người mẫu) {
x += myObj. ô tô [tôi]. mô hình [j];
}
}Tự mình thử »


Thuộc tính tài sản

Tất cả tài sản đều có tên. Ngoài ra chúng còn có giá trị

Giá trị là một trong những thuộc tính của thuộc tính

các thuộc tính khác là. có thể đếm được, có thể định cấu hình và có thể ghi

Các thuộc tính này xác định cách truy cập thuộc tính (có thể đọc được không?, có thể ghi không?)

Trong JavaScript, tất cả các thuộc tính có thể được đọc, nhưng chỉ có thể thay đổi thuộc tính giá trị (và chỉ khi thuộc tính có thể ghi được)

(ECMAScript 5 có các phương thức để nhận và đặt tất cả các thuộc tính thuộc tính)


Thuộc tính nguyên mẫu

Các đối tượng JavaScript kế thừa các thuộc tính của nguyên mẫu của chúng

Từ khóa delete không xóa các thuộc tính được kế thừa, nhưng nếu bạn xóa một thuộc tính nguyên mẫu, nó sẽ ảnh hưởng đến tất cả các đối tượng được kế thừa từ nguyên mẫu

Bắt đầu từ MongoDB 5. 0, toán tử cập nhật xử lý các trường tài liệu có tên dựa trên chuỗi theo thứ tự từ điển. Các trường có tên số được xử lý theo thứ tự số. Xem để biết chi tiết

Nếu trường không có trong tài liệu để cập nhật, hãy thêm trường mảng với giá trị là phần tử của nó

Nếu trường không phải là một mảng, hoạt động sẽ thất bại

Nếu giá trị là một mảng, hãy thêm toàn bộ mảng dưới dạng một phần tử. Để thêm riêng từng phần tử của giá trị, hãy sử dụng công cụ sửa đổi với. Ví dụ, xem. Để biết danh sách các công cụ sửa đổi có sẵn cho , hãy xem

Bắt đầu từ MongoDB 5. 0, không còn phát sinh lỗi khi bạn sử dụng toán tử cập nhật như với biểu thức toán hạng trống (

db.students.insertOne( { _id: 1, scores: [ 44, 78, 38, 80 ] } )
4 ). Bản cập nhật trống dẫn đến không có thay đổi nào và không có mục nào được tạo (có nghĩa là thao tác này không hoạt động)

sửa đổi

Bạn có thể sử dụng toán tử với các công cụ sửa đổi sau

bổ nghĩa

Sự miêu tả

Nối nhiều giá trị vào trường mảng

Giới hạn số phần tử mảng. Yêu cầu sử dụng công cụ sửa đổi

Sắp xếp thứ tự các phần tử của mảng. Yêu cầu sử dụng công cụ sửa đổi

Chỉ định vị trí trong mảng để chèn các phần tử mới. Yêu cầu sử dụng công cụ sửa đổi. Không có công cụ sửa đổi, nó sẽ nối các phần tử vào cuối mảng

Khi được sử dụng với các từ bổ nghĩa, toán tử có dạng

{ $push: { : { : , .. }, .. } }

Quá trình xử lý thao tác với các công cụ sửa đổi diễn ra theo thứ tự sau, bất kể thứ tự xuất hiện của các công cụ sửa đổi

  1. Cập nhật mảng để thêm các phần tử vào đúng vị trí

  2. Áp dụng sắp xếp, nếu được chỉ định

  3. Cắt mảng, nếu được chỉ định

  4. Lưu trữ mảng

ví dụ

Tạo bộ sưu tập

db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
7

db.students.insertOne( { _id: 1, scores: [ 44, 78, 38, 80 ] } )

Nối một giá trị vào một mảng

Ví dụ sau nối thêm

db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
8 vào mảng
db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
9

________số 8_______

đầu ra ví dụ

{ _id: 1, scores: [ 44, 78, 38, 80, 89 ] }

Nối một giá trị vào mảng trong nhiều tài liệu

Thêm các tài liệu sau vào bộ sưu tập

db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
7

db.students.insertMany( [   { _id: 2, scores: [ 45, 78, 38, 80, 89 ] } ,   { _id: 3, scores: [ 46, 78, 38, 80, 89 ] } ,   { _id: 4, scores: [ 47, 78, 38, 80, 89 ] }] )

Thao tác sau đây nối thêm

{ _id: 1, scores: [ 44, 78, 38, 80, 89 ] }
2 vào mảng
db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
9 trong mỗi tài liệu

db.students.updateMany(   { },   { $push: { scores: 95 } })

Để xác nhận rằng mỗi mảng

db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
9 bao gồm
{ _id: 1, scores: [ 44, 78, 38, 80, 89 ] }
2, hãy chạy thao tác sau

db.students.find()

Hoạt động trả về kết quả sau

[   { _id: 1, scores: [ 44, 78, 38, 80, 89, 95 ] },   { _id: 2, scores: [ 45, 78, 38, 80, 89, 95 ] },   { _id: 3, scores: [ 46, 78, 38, 80, 89, 95 ] },   { _id: 4, scores: [ 47, 78, 38, 80, 89, 95 ] }]

Nối nhiều giá trị vào một mảng

Sử dụng với công cụ sửa đổi để nối nhiều giá trị vào trường mảng

Ví dụ sau nối từng phần tử của

{ _id: 1, scores: [ 44, 78, 38, 80, 89 ] }
8 vào mảng
db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
9 cho tài liệu trong đó trường
db.students.insertMany( [   { _id: 2, scores: [ 45, 78, 38, 80, 89 ] } ,   { _id: 3, scores: [ 46, 78, 38, 80, 89 ] } ,   { _id: 4, scores: [ 47, 78, 38, 80, 89 ] }] )
0 bằng
db.students.insertMany( [   { _id: 2, scores: [ 45, 78, 38, 80, 89 ] } ,   { _id: 3, scores: [ 46, 78, 38, 80, 89 ] } ,   { _id: 4, scores: [ 47, 78, 38, 80, 89 ] }] )
1

db.students.updateOne(   { name: "joe" },   { $push: { scores: { $each: [ 90, 92, 85 ] } } })

Sử dụng Toán tử { $push: { : { : , .. }, .. } }3 với nhiều Công cụ sửa đổi

Thêm tài liệu sau vào bộ sưu tập

db.students.updateOne(   { _id: 1 },   { $push: { scores: 89 } })
7

{ $push: { : { : , .. }, .. } }
0

Các hoạt động sau đây sử dụng

  • công cụ sửa đổi để thêm nhiều tài liệu vào mảng

    db.students.insertMany( [   { _id: 2, scores: [ 45, 78, 38, 80, 89 ] } ,   { _id: 3, scores: [ 46, 78, 38, 80, 89 ] } ,   { _id: 4, scores: [ 47, 78, 38, 80, 89 ] }] )
    6,

  • công cụ sửa đổi để sắp xếp tất cả các phần tử của mảng

    db.students.insertMany( [   { _id: 2, scores: [ 45, 78, 38, 80, 89 ] } ,   { _id: 3, scores: [ 46, 78, 38, 80, 89 ] } ,   { _id: 4, scores: [ 47, 78, 38, 80, 89 ] }] )
    6 đã sửa đổi theo trường
    db.students.insertMany( [   { _id: 2, scores: [ 45, 78, 38, 80, 89 ] } ,   { _id: 3, scores: [ 46, 78, 38, 80, 89 ] } ,   { _id: 4, scores: [ 47, 78, 38, 80, 89 ] }] )
    9 theo thứ tự giảm dần và

    Làm cách nào để cập nhật giá trị đối tượng trong MongoDB?

    Trình vỏ MongoDB cung cấp các phương thức sau để cập nhật tài liệu trong bộ sưu tập. .
    Để cập nhật một tài liệu, hãy sử dụng db. thu thập. cập nhậtOne()
    Để cập nhật nhiều tài liệu, hãy sử dụng db. thu thập. cập nhậtMany()
    Để thay thế một tài liệu, hãy sử dụng db. thu thập. thay thếOne()

    Làm cách nào để thêm giá trị trong MongoDB?

    Để chèn dữ liệu vào bộ sưu tập MongoDB, bạn cần sử dụng phương thức insert() hoặc save() của MongoDB .

    Làm cách nào để thêm giá trị vào trường mảng trong MongoDB?

    Trong MongoDB, toán tử $push được sử dụng để nối một giá trị đã chỉ định vào một mảng . Nếu trường được đề cập không có trong tài liệu để cập nhật, toán tử $push sẽ thêm trường đó dưới dạng trường mới và bao gồm giá trị được đề cập làm thành phần của nó. Nếu trường cập nhật không phải là trường kiểu mảng thì thao tác không thành công.

    Làm cách nào để cập nhật mảng đối tượng trong MongoDB?

    Để thực hiện cập nhật trên tất cả các phần tử mảng được nhúng của từng tài liệu phù hợp với truy vấn của bạn, hãy sử dụng toán tử vị trí đã lọc $[ ] chỉ định các phần tử mảng phù hợp trong tài liệu cập nhật.