Hướng dẫn can you create relationships in mongodb? - bạn có thể tạo mối quan hệ trong mongodb không?

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

Mô hình các mối quan hệ một-một với các tài liệu nhúng có mô hình dữ liệu sử dụng các tài liệu nhúng để mô tả các mối quan hệ một-một giữa dữ liệu được kết nối. Mối quan hệ trực tiếp giữa dữ liệu được kết nối. Modelel Mối quan hệ một-nhiều với tài liệu tham khảo Một mô hình dữ liệu sử dụng các tài liệu tham khảo để mô tả các mối quan hệ một-nhiều giữa các tài liệu.

Để tạo mối quan hệ trong MongoDB, hoặc nhúng một tài liệu BSON trong một tài liệu khác hoặc tham khảo nó từ một tài liệu khác.

Cơ sở dữ liệu MongoDB hoạt động khác nhau với cơ sở dữ liệu quan hệ. Điều này cũng đúng với các mối quan hệ.

Trong MongoDB, bạn có thể tạo mối quan hệ bằng một trong hai phương pháp sau:

  • Tài liệu nhúng.
  • Tài liệu tham khảo.

Phương pháp bạn sử dụng sẽ phụ thuộc vào dữ liệu và cách bạn dự định truy vấn dữ liệu đó.

Mối quan hệ nhúng

Với MongoDB, bạn có thể nhúng tài liệu trong các tài liệu. Do đó, một tài liệu duy nhất có thể chứa các mối quan hệ của riêng mình.

Trên thực tế, chúng tôi đã tạo một mối quan hệ bằng phương pháp này khi chúng tôi lần đầu tiên tạo một tài liệu.

Mối quan hệ một-một

Một mối quan hệ một-một là nơi mà tài liệu cha mẹ có một đứa con và đứa trẻ có một cha mẹ.

Ví dụ, một quy tắc kinh doanh có thể nói rằng một nghệ sĩ chỉ có thể có một địa chỉ và địa chỉ chỉ có thể thuộc về một nghệ sĩ.

Mã sau đây tạo ra một mối quan hệ một-một, được nhúng trong tài liệu.

Result:

WriteResult({ "nInserted" : 1 })

Mối quan hệ một-nhiều

Mối quan hệ một-nhiều là nơi tài liệu cha mẹ có thể có nhiều tài liệu con, nhưng các tài liệu con chỉ có thể có một tài liệu chính.

Vì vậy, một quy tắc kinh doanh khác có thể nói rằng một nghệ sĩ có thể có nhiều album, nhưng một album chỉ có thể thuộc về một nghệ sĩ.

Chạy mã sau sẽ tạo mối quan hệ một-nhiều:

Result:

WriteResult({ "nInserted" : 1 })

Tài liệu được tham chiếu các mối quan hệ

Bạn có thể sử dụng một tham chiếu tài liệu để tạo mối quan hệ. Thay vì nhúng tài liệu trẻ vào tài liệu cha (như chúng tôi đã làm ở trên), bạn tách tài liệu trẻ vào tài liệu độc lập của chính nó.

Vì vậy, chúng tôi có thể làm điều này:

Tài liệu phụ huynh

Tài liệu trẻ em

Chúng tôi sẽ chèn 3 tài liệu con - một cho mỗi thành viên ban nhạc:

Truy vấn mối quan hệ

Sau khi chèn hai tài liệu trên, bạn có thể sử dụng $lookup để thực hiện tham gia bên ngoài bên trái trên hai bộ sưu tập.

Điều này, kết hợp với phương pháp aggregate()$match để chỉ định nghệ sĩ cụ thể mà bạn quan tâm, sẽ trả về các tài liệu phụ huynh và con cái trong một.

Result:

{
	"_id" : 4,
	"artistname" : "Rush",
	"band_members" : [
		{
			"_id" : 9,
			"name" : "Geddy Lee",
			"instrument" : [
				"Bass",
				"Vocals",
				"Keyboards"
			],
			"artist_id" : 4
		},
		{
			"_id" : 10,
			"name" : "Alex Lifeson",
			"instrument" : [
				"Guitar",
				"Backing Vocals"
			],
			"artist_id" : 4
		},
		{
			"_id" : 11,
			"name" : "Neil Peart",
			"instrument" : "Drums",
			"artist_id" : 4
		}
	]
}

Bạn có thể thấy rằng hai lĩnh vực đầu tiên là từ bộ sưu tập nghệ sĩ, và phần còn lại là từ bộ sưu tập nhạc sĩ.

Vì vậy, nếu bạn chỉ truy vấn bộ sưu tập nghệ sĩ của chính nó:

Bạn chỉ nhận được cái này:

{ "_id" : 4, "artistname" : "Rush" }

Không có dữ liệu liên quan được trả về.

Khi nào nên sử dụng các tài liệu nhúng so với các tài liệu được tham chiếu

Cả hai phương pháp tạo mối quan hệ đều có ưu và nhược điểm của họ. Có những lúc bạn có thể sử dụng các tài liệu nhúng và những lần khác bạn sẽ sử dụng các tài liệu được tham chiếu.

Khi nào nên sử dụng các mối quan hệ nhúng

Một trong những lợi ích chính của việc sử dụng phương pháp quan hệ nhúng là hiệu suất. Khi mối quan hệ được nhúng trong tài liệu, các truy vấn sẽ chạy nhanh hơn so với khi chúng được trải ra trên nhiều tài liệu. MongoDB chỉ cần trả về một tài liệu, thay vì tham gia nhiều tài liệu để truy xuất các mối quan hệ. Điều này có thể cung cấp một sự tăng cường hiệu suất lớn - đặc biệt là khi làm việc với nhiều dữ liệu.

Các mối quan hệ nhúng cũng làm cho các truy vấn dễ viết hơn. Thay vì viết các truy vấn phức tạp tham gia nhiều tài liệu thông qua số nhận dạng duy nhất của họ, bạn có thể trả về tất cả các dữ liệu liên quan trong một truy vấn duy nhất.

Một cân nhắc khác để ghi nhớ là, MongoDB chỉ có thể đảm bảo tính nguyên tử ở cấp độ tài liệu. Cập nhật tài liệu cho một tài liệu duy nhất luôn là nguyên tử, nhưng không phải cho nhiều tài liệu.

Khi nhiều người dùng đang truy cập dữ liệu, luôn có cơ hội hai hoặc nhiều người dùng sẽ cố gắng cập nhật cùng một tài liệu với dữ liệu khác nhau. Trong trường hợp này, MongoDB sẽ đảm bảo rằng không có xung đột xảy ra và chỉ có một bộ dữ liệu được cập nhật tại một thời điểm. MongoDB không thể đảm bảo điều này trên nhiều tài liệu.

Vì vậy, nói chung, các mối quan hệ nhúng có thể được sử dụng trong hầu hết các trường hợp, miễn là tài liệu vẫn còn trong giới hạn kích thước (16 megabyte tại thời điểm viết) và/hoặc giới hạn làm tổ của nó (sâu 100 cấp tại thời điểm viết).

Tuy nhiên, các mối quan hệ nhúng không phù hợp với tất cả các trường hợp. Có thể có những tình huống có ý nghĩa hơn khi tạo ra một mối quan hệ được tham chiếu tài liệu.

Khi nào nên sử dụng các mối quan hệ được tham chiếu

Đối với dữ liệu cần được lặp lại trên nhiều tài liệu, có thể hữu ích khi có chúng trong tài liệu riêng của chúng. Điều này có thể làm giảm lỗi và giúp giữ cho dữ liệu nhất quán (trong khi lưu ý rằng các bản cập nhật nhiều tài liệu không phải là nguyên tử).

Sử dụng ví dụ trên, một nhạc sĩ có thể là thành viên (hoặc thành viên cũ) của nhiều ban nhạc. Một số cũng có thể sản xuất album cho các nghệ sĩ khác, dạy học sinh, điều hành phòng khám, v.v. Ngoài ra, rất nhiều dữ liệu có thể được lưu trữ chống lại mỗi nhạc sĩ. Vì vậy, có một tài liệu riêng cho mỗi nhạc sĩ có ý nghĩa trong trường hợp này.

Ngoài ra, nếu bạn nghĩ rằng các tài liệu nhúng của bạn có thể vượt quá giới hạn kích thước tệp do MongoDB áp đặt, thì bạn sẽ cần lưu trữ một số dữ liệu trong các tài liệu riêng biệt.

Bạn có thể làm cho các mối quan hệ trong MongoDB?

Mối quan hệ MongoDB là đại diện cho cách nhiều tài liệu được kết nối hợp lý với nhau trong MongoDB.Các phương pháp nhúng và tham chiếu là hai cách để tạo ra các mối quan hệ như vậy.The Embedded and Referenced methods are two ways to create such relationships.

MongoDB có sử dụng cơ sở dữ liệu quan hệ không?

MongoDB là một cơ sở dữ liệu tài liệu phi quan hệ cung cấp hỗ trợ cho lưu trữ giống JSON.Cơ sở dữ liệu MongoDB có mô hình dữ liệu linh hoạt cho phép bạn lưu trữ dữ liệu không có cấu trúc và nó cung cấp hỗ trợ lập chỉ mục đầy đủ và sao chép với các API phong phú và trực quan.non-relational document database that provides support for JSON-like storage. The MongoDB database has a flexible data model that enables you to store unstructured data, and it provides full indexing support, and replication with rich and intuitive APIs.

Làm thế nào bạn có thể thực hiện 1 đến nhiều mối quan hệ trong MongoDB?

Trong MongoDB, các mối quan hệ một-một, một-nhiều và nhiều người có thể được thực hiện theo hai cách: sử dụng các tài liệu nhúng.Sử dụng tham chiếu của các tài liệu của một bộ sưu tập khác.Using embedded documents. Using the reference of documents of another collection.