This is a bilingual snapshot page saved by the user at 2024-11-10 9:42 for https://www.mongodb.com/docs/manual/data-modeling/enforce-consistency/embed-data/, provided with bilingual support by Immersive Translate. Learn how to save?
Docs Menu

Enforce Data Consistency with Embedding
Thực thi tính nhất quán dữ liệu bằng cách nhúng

If your schema stores the same data in multiple collections, you can embed related data to remove the duplication. The updated, denormalized schema keeps data consistent by maintaining data values in a single location.
Nếu lược đồ của bạn lưu trữ cùng một dữ liệu trong nhiều bộ sưu tập, bạn có thể nhúng dữ liệu liên quan để loại bỏ sự trùng lặp. Lược đồ được cập nhật, không chuẩn hóa giữ cho dữ liệu nhất quán bằng cách duy trì các giá trị dữ liệu ở một vị trí duy nhất.

Embedding related data simplifies your schema and ensures that the user always reads the most current data. However, embedding may not be the best choice to represent complex relationships like many-to-many.
Việc nhúng dữ liệu liên quan sẽ đơn giản hóa lược đồ của bạn và đảm bảo rằng người dùng luôn đọc dữ liệu mới nhất. Tuy nhiên, việc nhúng có thể không phải là lựa chọn tốt nhất để thể hiện các mối quan hệ phức tạp như nhiều-nhiều.

How to optimally embed related data depends on the queries run by your application. When you embed data in a single collection, consider the indexes that enable performant queries and structure your schema to allow for efficient, logical indexes.
Cách nhúng tối ưu dữ liệu liên quan tùy thuộc vào các truy vấn do ứng dụng của bạn chạy. Khi bạn nhúng dữ liệu vào một bộ sưu tập, hãy xem xét các chỉ mục cho phép truy vấn hiệu quả và cấu trúc lược đồ của bạn để cho phép lập chỉ mục hợp lý, hiệu quả.

To compare the benefits of embedding documents and references, see Embedded Data Versus References.
Để so sánh lợi ích của việc nhúng tài liệu và tài liệu tham khảo, hãy xem Dữ liệu nhúng và Tài liệu tham khảo.

Review the different methods to enforce data consistency to ensure that embedding is the best approach for your application. For more information, see Data Consistency.
Xem lại các phương pháp khác nhau để thực thi tính nhất quán của dữ liệu nhằm đảm bảo rằng việc nhúng là phương pháp tốt nhất cho ứng dụng của bạn. Để biết thêm thông tin, hãy xem Tính nhất quán của dữ liệu.

Updating how data is stored in your database can impact existing indexes and queries. When you update your schema, also update your application's indexes and queries to account for the schema changes.
Việc cập nhật cách lưu trữ dữ liệu trong cơ sở dữ liệu của bạn có thể tác động đến các chỉ mục và truy vấn hiện có. Khi bạn cập nhật lược đồ, hãy cập nhật cả chỉ mục và truy vấn của ứng dụng để tính đến những thay đổi trong lược đồ.

The following example enforces data consistency in an e-commerce application. In the initial schema, product information is duplicated in the products and sellers collections. The sellerId field in the products collection is a reference to to the sellers collection, and links the data together.
Ví dụ sau đây thực thi tính nhất quán của dữ liệu trong ứng dụng thương mại điện tử. Trong lược đồ ban đầu, thông tin sản phẩm được sao chép trong bộ sưu tập productssellers . Trường sellerId trong bộ sưu tập productstham chiếu đến bộ sưu tập sellers và liên kết dữ liệu với nhau.

// products collection
[
{
_id: 111,
sellerId: 456,
name: "sweater",
price: 30,
rating: 4.9,
color: "green"
},
{
_id: 222,
sellerId: 456,
name: "t-shirt",
price: 10,
rating: 4.2,
color: "blue"
},
{
_id: 333,
sellerId: 456,
name: "vest",
price: 20,
rating: 4.7,
color: "red"
}
]
// sellers collection
[
{
_id: 456,
name: "Cool Clothes Co",
location: {
address: "21643 Andreane Shores",
state: "Ohio",
country: "United States"
},
phone: "567-555-0105",
products: [
{
id: 111,
name: "sweater",
price: 30
},
{
id: 222,
name: "t-shirt",
price: 10
},
{
id: 333
name: "vest",
price: 20
}
]
}
]

To denormalize the schema and enforce consistency, embed the product information inside of the sellers collection:

db.sellers.insertOne(
{
_id: 456,
name: "Cool Clothes Co",
location: {
address: "21643 Andreane Shores",
state: "Ohio",
country: "United States"
},
phone: "567-555-0105",
products: [
{
id: 111,
name: "sweater",
price: 30,
rating: 4.9,
color: "green"
},
{
id: 222,
name: "t-shirt",
price: 10,
rating: 4.2,
color: "blue"
},
{
id: 333,
name: "vest",
price: 20,
rating: 4.7,
color: "red"
}
]
}
)

The updated schema returns all product information when a user queries for a particular seller. The updated schema does not require additional logic or maintenance to keep data consistent because data is denormalized in a single collection.

After you restructure your schema, you can create indexes to support common queries. For example, if users often query for products by color, you can create an index on the products.color field:

db.sellers.createIndex( { "products.color": 1 } )
Navigated to Enforce Data Consistency with Embedding