Tôi đang tìm ra khung tập hợp mongodb cực kỳ mạnh mẽ - nó có vẻ như là một lựa chọn tốt để làm phẳng một đối tượng. Lược đồ của tôi sử dụng một mảng các đối tượng con trong một mảng được gọi là tài liệu. Số lượng tài liệu có thể thay đổi, nhưng một trường (danh mục) cụ thể sẽ là duy nhất trên các đối tượng trong mảng. Tôi muốn sử dụng khung tổng hợp để làm phẳng cấu trúc và tự động đổi tên các trường dựa trên giá trị của trường thể loại. Tôi không thể tìm thấy một cách dễ dàng để thực hiện điều này bằng cách sử dụng một dự án $ cùng với $ cond. Là có một cách?Khuôn khổ tập hợp MongoDB - Đổi tên trường động
Lý do cho mảng đối tượng vật chất là cho phép tìm kiếm đơn giản:
ví dụ: {'materials.name': 'XYZ'} kéo trở lại bất kỳ tài liệu nào mà XYZ được tìm thấy.
Ví dụ: của trước và sau khi tài liệu
{
"_id" : ObjectId("123456"),
"materials" : [
{
"name" : "XYZ",
"type" : "Red",
...
"category" : "A"
},
{
"name" : "ZYX",
"type" : "Blue",
...
"category" : "B"
}]
}
để
{
"material_A_name" : "XYZ",
"material_A_type" : "Red",
...
"material_B_name" : "ZYX",
"material_B_type" : "Blue",
...
}
Tài liệu 'sau' của bạn không hợp lệ JSON – JohnnyHK
Cảm ơn, đã cập nhật - đó là lỗi khi tạo mô hình trong trình chỉnh sửa của tôi – user2234151
Ok, tôi hiểu bạn đang cố gắng làm gì bây giờ. Không có nhiều hỗ trợ cho các khóa được tạo động trong khung làm việc vì vậy tôi không thấy cách bạn có thể làm điều này với điều đó. Bạn có thể chỉ cần đăng quá trình kết quả trong mã để làm điều đó. – JohnnyHK