Hướng dẫn add attribute to array mongodb - thêm thuộc tính vào mongodb mảng

Tôi đã có một loạt các tài liệu MongoDB theo cấu trúc này:

{
 "_id": "myId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}

Một cái khác có thể trông như thế này:

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}

Tôi cần thêm một thuộc tính vào bất kỳ phần tử mảng nào trong đó foo = thanh chỉ khi id = myotherid ... nói cách khác, do đó tài liệu thứ hai của tôi sẽ trông như thế này (nhưng tài liệu đầu tiên sẽ không được cập nhật):

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}

Tôi biết rằng đối số đầu tiên của bản cập nhật của tôi sẽ là một cái gì đó như thế này:

db.coll.update({$and:[{"_id":"myOtherId"},{"myArray.foo":"bar"}]}, // but what comes in the $set?

Sau đó, làm cách nào để đưa ra đối số

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
6 để
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
7 chỉ được thêm vào nơi tôi cần? Có cách nào để nắm bắt giá trị chỉ mục của mục mảng, hoặc một cách tốt hơn để xử lý nó?

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 Trình điều khiển
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 nối một giá trị được chỉ định vào một mảng.

The

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 operator appends a specified value to an array.

Toán tử

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 có biểu mẫu:
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
operator has the form:

{ $push: { <field1>: <value1>, ... } }

Để chỉ định

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
1 trong tài liệu nhúng hoặc trong một mảng, hãy sử dụng ký hiệu DOT.

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

Nếu trường không có trong tài liệu để cập nhật,

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 sẽ thêm trường mảng có giá trị làm phần tử của nó.
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
adds the array field with the value as its element.

Nếu trường không phải là một mảng, hoạt động sẽ thất bại.not an array, the operation will fail.

Nếu giá trị là một mảng,

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 nối toàn bộ mảng là một phần tử duy nhất. Để thêm từng phần tử của giá trị, hãy sử dụng công cụ sửa đổi
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4 với
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8. Ví dụ, hãy xem thêm một giá trị vào các mảng trong nhiều tài liệu. Để biết danh sách các công cụ sửa đổi có sẵn cho
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8, xem các sửa đổi.
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
appends the whole array as a single element. To add each element of the value separately, use the
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4 modifier with
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
. For an example, see Append a Value to Arrays in Multiple Documents. For a list of modifiers available for
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
, see Modifiers.

Bắt đầu từ MongoDB 5.0,

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
7 không còn gây ra lỗi khi bạn sử dụng toán tử cập nhật như
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 với biểu thức toán hạng trống (
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
9). Một bản cập nhật trống dẫn đến không có thay đổi và không có mục nhập oplog được tạo (có nghĩa là hoạt động là không có op).
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
with an empty operand expression (
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
9 ). An empty update results in no changes and no oplog entry is created (meaning that the operation is a no-op).

Bạn có thể sử dụng toán tử

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 với các sửa đổi sau:
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
operator with the following modifiers:

bổ nghĩa

Sự mô tả

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4

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

db.coll.update({$and:[{"_id":"myOtherId"},{"myArray.foo":"bar"}]}, // but what comes in the $set?
2

Giới hạn số lượng các yếu tố mảng. Yêu cầu sử dụng công cụ sửa đổi

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4.

db.coll.update({$and:[{"_id":"myOtherId"},{"myArray.foo":"bar"}]}, // but what comes in the $set?
4

Đơn đặt hàng các yếu tố của mảng. Yêu cầu sử dụng công cụ sửa đổi

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4.

db.coll.update({$and:[{"_id":"myOtherId"},{"myArray.foo":"bar"}]}, // but what comes in the $set?
6

Chỉ định vị trí trong mảng để chèn các yếu tố mới. Yêu cầu sử dụng công cụ sửa đổi

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4. Không có công cụ sửa đổi
db.coll.update({$and:[{"_id":"myOtherId"},{"myArray.foo":"bar"}]}, // but what comes in the $set?
6,
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 nối các phần tử vào cuối mảng.
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
appends the elements to the end of the array.

Khi được sử dụng với các bộ điều chỉnh, toán tử

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 có biểu mẫu:
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
operator has the form:

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

Việc xử lý hoạt động

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 với các công cụ sửa đổi xảy ra theo thứ tự sau, bất kể thứ tự xuất hiện bộ điều chỉnh:
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
operation with modifiers occur in the following order, regardless of the order in which the modifiers appear:

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

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

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

  4. Lưu trữ mảng.

Tạo bộ sưu tập

{ $push: { <field1>: <value1>, ... } }

2:

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

Ví dụ sau đây bổ sung

{ $push: { <field1>: <value1>, ... } }

3 vào mảng

{ $push: { <field1>: <value1>, ... } }

4:

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

Ví dụ đầu ra:

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

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

{ $push: { <field1>: <value1>, ... } }

2:

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

Hoạt động

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 sau đây bổ sung

{ $push: { <field1>: <value1>, ... } }

7 vào mảng

{ $push: { <field1>: <value1>, ... } }

4 trong mỗi tài liệu:
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
operation appends

{ $push: { <field1>: <value1>, ... } }

7 to the

{ $push: { <field1>: <value1>, ... } }

4 array in each document:

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
0

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

{ $push: { <field1>: <value1>, ... } }

4 bao gồm

{ $push: { <field1>: <value1>, ... } }

7, hãy chạy thao tác sau:

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

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
1

Sử dụng

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 với công cụ sửa đổi
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4 để nối nhiều giá trị vào trường mảng.
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
with the
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar","foot":"bart"},
   {"foo": "baz"}
  ]
}
4 modifier to append multiple values to the array field.

Ví dụ sau đây nối thêm từng phần tử của

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

3 vào mảng

{ $push: { <field1>: <value1>, ... } }

4 cho tài liệu trong đó trường

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

5 bằng

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

6:

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
2

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

{ $push: { <field1>: <value1>, ... } }

2:

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
3

Hoạt động

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8 sau đây sử dụng:
{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
8
operation uses:

  • Bộ điều chỉnh

    {
     "_id": "myOtherId",
     "myArray": [
       {"foo": "bar","foot":"bart"},
       {"foo": "baz"}
      ]
    }
    
    4 để thêm nhiều tài liệu vào mảng

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

    0,

  • Công cụ sửa đổi

    db.coll.update({$and:[{"_id":"myOtherId"},{"myArray.foo":"bar"}]}, // but what comes in the $set?
    
    4 để sắp xếp tất cả các phần tử của mảng

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

    0 đã sửa đổi theo trường

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

    3 theo thứ tự giảm dần và

  • Công cụ sửa đổi

    db.coll.update({$and:[{"_id":"myOtherId"},{"myArray.foo":"bar"}]}, // but what comes in the $set?
    
    2 chỉ giữ ba phần tử được sắp xếp đầu tiên của mảng

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

    0.first three sorted elements of the

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

    0 array.

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
4

Sau khi hoạt động, chỉ có ba câu đố ghi điểm cao nhất trong mảng:

{
 "_id": "myOtherId",
 "myArray": [
   {"foo": "bar"},
   {"foo": "baz"}
  ]
}
5

Mẹo

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

Vì vậy, việc thêm một trường mới vào một mảng là có thể bằng cách sử dụng thao tác cập nhật. Toán tử $ Push được sử dụng để chèn trường bên trong mảng và nếu chúng ta muốn thêm nhiều trường, hãy sử dụng $ mỗi bên trong $ PUSP.using the update operation. $push operator is used to insert the field inside the array and if we want to add multiple fields, use $each inside $push.

Làm thế nào để bạn cập nhật một đối tượng mảng trong MongoDB?

Cập nhật tài liệu trong một mảng Nhà điều hành $ định vị tạo điều kiện cập nhật cho các mảng có chứa các tài liệu nhúng.Sử dụng toán tử $ định vị để truy cập các trường trong các tài liệu nhúng với ký hiệu dấu chấm trên toán tử $.The positional $ operator facilitates updates to arrays that contain embedded documents. Use the positional $ operator to access the fields in the embedded documents with the dot notation on the $ operator.

Làm cách nào để thêm một lĩnh vực mới trong MongoDB?

Để thêm trường hoặc trường vào các tài liệu nhúng (bao gồm các tài liệu trong mảng) sử dụng ký hiệu dấu chấm.Xem ví dụ.Để thêm một phần tử vào một trường mảng hiện có với $ addfields, hãy sử dụng với $ concatarrays.Xem ví dụ.use the dot notation. See example. To add an element to an existing array field with $addFields , use with $concatArrays . See example.

Làm cách nào để cập nhật một mảng lồng nhau trong MongoDB?

Cập nhật các mảng lồng nhau kết hợp với toán tử vị trí $ [] $ [], kết hợp với toán tử $ [] tất cả các toán tử vị trí, có thể được sử dụng để cập nhật các mảng lồng nhau.Các bản cập nhật sau đây các giá trị lớn hơn hoặc bằng 8 trong các lớp lồng nhau.câu hỏi mảng nếu các lớp liên quan.The $[] filtered positional operator, in conjunction with the $[] all positional operator, can be used to update nested arrays. The following updates the values that are greater than or equal to 8 in the nested grades. questions array if the associated grades.