Tôi đang cố gắng làm điều gì đó mà tôi nghĩ là khá đơn giản. Giả sử tôi có một loạt các bản ghi trong mongo có khóa chung và số thuộc tính thay đổi. Tôi muốn chọn tất cả các thuộc tính và nhóm theo tên trên các bản ghi. Ví dụChọn * nhóm theo tập hợp mongo
{ Name: George, x: 5, y: 3 }
{ Name: George, z: 9 }
{ Name: Rob, x: 12, y: 2 }
Tôi muốn tạo ra một CSV mà trông như thế này:
Name X Y Z
George 5 3 9
Rob 12 2
Cố gắng
DB.data.aggregate({ $group : { _id : "$Name" } })
Đáng tiếc là tôi lấy lại tất cả những cái tên như hồ sơ nhưng không phải là công đoàn của tất cả các thuộc tính có thể.
Cảm ơn, tôi đã làm một điều tương tự bằng cách sử dụng $ push và có vẻ như nó hoạt động. Câu hỏi tiếp theo của tôi sẽ là liệu từ đây có cách nào tốt nhất là xuất dữ liệu sang CSV phẳng, giải phóng các mảng nội bộ trong tập kết quả? –
Tôi đang sử dụng pymongo và python để tạo csv. Vấn đề còn lại là khi tôi sử dụng $ addToSet, tôi tạo mảng kết quả cho mỗi khóa, ngay cả khi chỉ có một giá trị riêng biệt cho mỗi cặp giá trị khóa. Điều này sau đó làm cho quá trình làm phẳng để csv rất cồng kềnh. Có cách nào để tránh tạo mảng các giá trị quan trọng không? –
@RogerSanchez: '$ addToSet' hoặc' $ push' sẽ trả về giá trị mảng, vì vậy bạn sẽ phải thực hiện một số thao tác xoa bóp trong quá trình xuất CSV hoặc xem xét một hàm tổng hợp khác. Ví dụ: nếu tất cả các giá trị là số và bạn chỉ có một giá trị duy nhất cho mỗi trường, bạn có thể thoát khỏi bằng cách sử dụng ['$ max'] (http://docs.mongodb.org/manual/reference/aggregation/) #_S_max) thay thế. Nếu các giá trị kết quả là * đôi khi * mảng, bạn sẽ phải tranh luận trong mã của bạn. Dưới đây là một ví dụ về gist của Python có thể giúp: [làm phẳng các mảng tăng thêm thành các chuỗi được trích dẫn trong CSV] (https://gist.github.com/a39b087da394b746e4fe). – Stennie