Hướng dẫn store array of objects in mysql - lưu trữ mảng các đối tượng trong mysql

Vì vậy, trong JavaScript, tôi có một mảng trông như thế này:

[{x1:0,x2:2000,y:300},{x1:50,x2:250,y:500}]

Và tôi muốn lưu trữ nó trong một trường duy nhất trong cơ sở dữ liệu của tôi. Tôi đã nghĩ về việc bằng cách nào đó làm cho nó trở thành một chuỗi và sau đó lưu nó dưới dạng văn bản, nhưng tôi không thực sự biết một cách rất hiệu quả và "thông minh" để làm điều đó. Tôi cũng đã nghe nói về loại trường Varbinary, nhưng tôi không biết làm thế nào để viết và đối tượng/mảng thành một trong những trường đó và làm thế nào để đọc nó ...

Điều tôi thực sự thích nhất sẽ là nếu nó sẽ tự động được đọc như một mảng. MySQL-plugin của tôi (hoặc tuy nhiên được gọi trong JS) trả về các truy vấn của tôi dưới dạng mảng các đối tượng như tốt:

[{id:0,bla:"text"},{id:0,bla:"text"}]

Đối với một truy vấn trong một bảng với ID Colrumns và BLA.

Nói rằng mảng của tôi được lưu trữ trong BLA, tôi muốn đối tượng tôi có thể trông giống hệt như thế này khi nó được trả lại (tuy nhiên nếu điều đó là không thể, tôi vẫn ổn với một giải pháp thay thế).

[{id:0,bla:[{x1:0,x2:2000,y:300},{x1:50,x2:250,y:500}]},{id:0,bla:[{x1:0,x2:2000,y:300},{x1:50,x2:250,y:500}]}]

Vì vậy, về cơ bản tôi sẽ nhận được một mảng chứa hai đối tượng, mỗi đối tượng có các thuộc tính bla và id, trong đó bLA là một mảng các đối tượng có thuộc tính x1, x2 và y.

Đăng vào ngày 26 tháng 10 năm 2021

Hướng dẫn nhanh về lưu trữ kiểu dữ liệu mảng bằng máy chủ cơ sở dữ liệu MySQL


Mặc dù array là một trong những loại dữ liệu phổ biến nhất trong thế giới lập trình, MySQL thực sự không hỗ trợ trực tiếp tiết kiệm một loại array.

Bạn có thể tạo một cột bảng gồm loại array trong MySQL. Cách dễ nhất lưu trữ dữ liệu loại array trong MySQL là sử dụng kiểu dữ liệu

INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
1.

Kiểu dữ liệu

INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
1 được thêm vào lần đầu tiên trong MySQL phiên bản 5.7.8 và bạn có thể sử dụng loại để lưu trữ các mảng và đối tượng
INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
1.

Hãy cùng xem một ví dụ về việc sử dụng loại

INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
1 trong MySQL.

Đầu tiên, hãy tạo một bảng có tên

INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
5 với câu lệnh SQL sau:

CREATE TABLE example (
  `id` int NOT NULL AUTO_INCREMENT,
  `docs` JSON,
  PRIMARY KEY (`id`)
);

Bảng

INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
5 sẽ có hai cột: cột
INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
7 và cột
INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
8.

Bây giờ bạn có thể đặt một mảng bên trong cột

INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');
8 với câu lệnh
+----+-----------------+
| id | docs            |
+----+-----------------+
|  1 | ["hot", "cold"] |
+----+-----------------+
0 sau:

INSERT INTO example (docs)
  VALUES ('["hot", "cold"]');

Bây giờ cột

+----+-----------------+
| id | docs            |
+----+-----------------+
|  1 | ["hot", "cold"] |
+----+-----------------+
1 sẽ có một mảng được lưu trữ bên trong nó như sau:

+----+-----------------+
| id | docs            |
+----+-----------------+
|  1 | ["hot", "cold"] |
+----+-----------------+

Và đó là cách dễ nhất bạn có thể lưu trữ một loại array bằng MySQL.

Bạn có thể đặt các mảng có độ dài khác nhau làm giá trị cột:

INSERT INTO example (docs)
  VALUES ('["morning", "noon", "night"]'),
    ('["raining", "cloudy"]'),
    ('["storm"]');

Cột bảng sẽ có các mảng có độ dài khác nhau như hình dưới đây:

+----+------------------------------+
| id | docs                         |
+----+------------------------------+
|  1 | ["hot", "cold"]              |
|  2 | ["morning", "noon", "night"] |
|  3 | ["raining", "cloudy"]        |
|  4 | ["storm"]                    |
+----+------------------------------+

Bạn có thể truy vấn dữ liệu cụ thể bằng cách sử dụng kết hợp mệnh đề

+----+-----------------+
| id | docs            |
+----+-----------------+
|  1 | ["hot", "cold"] |
+----+-----------------+
3 và
+----+-----------------+
| id | docs            |
+----+-----------------+
|  1 | ["hot", "cold"] |
+----+-----------------+
4 như sau:

SELECT id, docs 
  FROM example 
  WHERE docs LIKE '%cold%';

Và bạn cũng có thể

+----+-----------------+
| id | docs            |
+----+-----------------+
|  1 | ["hot", "cold"] |
+----+-----------------+
5 các hàng cụ thể như thế này:

UPDATE example SET docs = '["day", "night"]' 
  WHERE docs LIKE '%cold%';

Nếu bạn muốn tìm hiểu thêm về cách MySQL xử lý các mảng JSON, bạn có thể xem xét tài liệu kiểu dữ liệu JSON MySQL.

Cảm ơn vì đã đọc! 🙏

Chúng ta có thể lưu trữ mảng các đối tượng trong MySQL không?

Mặc dù một mảng là một trong những loại dữ liệu phổ biến nhất trong thế giới lập trình, MySQL thực sự không hỗ trợ lưu trực tiếp loại mảng. Bạn không thể tạo một cột bảng loại mảng trong MySQL. Dữ liệu loại mảng lưu trữ dễ dàng nhất trong MySQL là sử dụng kiểu dữ liệu JSON.MySQL actually doesn't support saving an array type directly. You can't create a table column of array type in MySQL. The easiest way store array type data in MySQL is to use the JSON data type.

Bạn có thể lưu trữ các đối tượng trong MySQL không?

SQL Server cho phép bạn lưu trữ các đối tượng tuần tự hóa ở định dạng JSON hoặc XML, sau đó chạy các truy vấn SQL hạng nhất trên chúng.Họ tuyên bố rằng bạn sẽ sử dụng các khả năng này khi: dữ liệu của bạn thưa thớt hoặc bạn không biết cấu trúc của dữ liệu hoặc cấu trúc dữ liệu của bạn có thể thay đổi đáng kể trong tương lai., and then run first-class SQL queries on them. They claim that you would use these capabilities when: Your data is sparse or you do not know the structure of the data, or the structure of your data may change significantly in the future.

Tôi có thể lưu trữ mảng json trong mysql không?

MySQL hỗ trợ kiểu dữ liệu JSON gốc được xác định bởi RFC 7159 cho phép truy cập hiệu quả vào dữ liệu trong các tài liệu JSON (ký hiệu đối tượng JavaScript).Kiểu dữ liệu JSON cung cấp các lợi thế này so với việc lưu trữ các chuỗi định dạng JSON trong một cột chuỗi: Xác thực tự động các tài liệu JSON được lưu trữ trong các cột JSON. that enables efficient access to data in JSON (JavaScript Object Notation) documents. The JSON data type provides these advantages over storing JSON-format strings in a string column: Automatic validation of JSON documents stored in JSON columns.

Bạn có thể lưu trữ một đối tượng trong một mảng?

Không giống như mảng truyền thống lưu trữ các giá trị như chuỗi, số nguyên, boolean, v.v ... Một mảng các đối tượng lưu trữ các đối tượng có nghĩa là các đối tượng được lưu trữ dưới dạng các phần tử của một mảng.Lưu ý rằng khi chúng ta nói mảng các đối tượng, nó không phải là chính đối tượng được lưu trữ trong mảng mà là tham chiếu của đối tượng.an Array of Objects stores objects that mean objects are stored as elements of an array. Note that when we say Array of Objects it is not the object itself that is stored in the array but the reference of the object.