Làm cách nào để xuất bộ sưu tập MongoDB sang CSV bằng Python?
Tôi có một tập lệnh Python để tạo danh sách các phiên bản EC2 trong tất cả các tài khoản AWS của chúng tôi (khoảng 150) và lưu trữ kết quả trong MongoDB Tôi đang xuất bộ sưu tập mongodb sang tệp CSV bằng mô-đun gấu trúc Python. Nó hoạt động ngoại trừ các tiêu đề không theo thứ tự và tôi không muốn in Chỉ mục MongoDB Trong phiên bản gốc của tập lệnh (trước khi thêm cơ sở dữ liệu), tôi đã sử dụng mô-đun CSV để ghi tệp và các tiêu đề đều chính xác. Tôi đã thêm cơ sở dữ liệu như một bài tập học tập và vì nó giúp làm việc dễ dàng hơn với tất cả các tài khoản Amazon mà chúng tôi có Nếu tôi xem json trong cơ sở dữ liệu mongo cho bộ sưu tập, tôi đang in tất cả các trường theo đúng thứ tự
Nhưng sử dụng gấu trúc python để xuất từ cơ sở dữ liệu mongo, các tiêu đề đã hết tác dụng. Dòng thông tin đến đúng tiêu đề, nhưng các cột hoàn toàn không theo thứ tự Trong mã của tôi, tôi đang tạo một từ điển có thông tin máy chủ trong đó, sau đó chuyển từ điển sang hàm in bộ sưu tập Mongo
Đây là chức năng chèn từ điển vào MongoDB
Đây là chức năng ghi MongoDB vào tệp
Đây là một liên kết đến thư mục mã gốc trong github. Các tệp chúng tôi muốn là aws_ec2_list_instances. py và ec2_mongo. py Tại sao các cột và tiêu đề không theo thứ tự trong phiên bản MongoDB? Pandas là một thư viện rất linh hoạt và linh hoạt để quản lý và phân tích dữ liệu. Sẽ là quá mức cần thiết nếu tất cả những gì bạn muốn làm là chuyển đổi bộ sưu tập MongoDB thành tệp CSV khi mô-đun DataFrame là cấu trúc dữ liệu chính của Pandas và nó đại diện cho một mảng dữ liệu 2 chiều. Một số điều về nó có thể gây nhầm lẫn và tôi nghĩ rằng bạn đã vấp phải sự thật là cả hàng và cột đều có thể có các chỉ mục được đặt tên. Nói chung, khi nói về dữ liệu trong Panda, "index" đề cập đến chỉ số hàng Trong dữ liệu của bạn, chỉ mục hàng sẽ là giá trị của MongoDB Một Sê-ri thường có nghĩa là đại diện cho một cột dữ liệu. Khi được khởi tạo bằng lệnh, các khóa được coi là chỉ mục, nghĩa là nhãn hàng chứ không phải nhãn cột. Bạn sẽ thấy hầu hết các hoạt động giữa DataFrames và Sê-ri đều coi Sê-ri là cột. Nhưng như tôi đã nói, Pandas rất linh hoạt, vì vậy chúng có hàm Điều hấp dẫn là khi nối thêm một hàng, Pandas mong muốn Sê-ri sẽ nối thêm một hàng vào các cột hiện có. Khi Sê-ri có các chỉ mục (các khóa trong lệnh gốc) không tồn tại trong DataFrame, nó sẽ thêm chúng vào cuối các cột dưới dạng cột mới và như bạn thấy, nó sẽ thêm chúng theo thứ tự được sắp xếp. Đây thực sự là một lỗi trong phiên bản hiện tại (1. 0. 5) điều đó có lẽ đã được phép kéo dài đến mức này mà không được sửa chữa vì dù sao thì lệnh dict đã từng bị bỏ qua, nhưng hãy biết ơn vì điều đó, vì nó đã khiến bạn phải điều tra thêm Việc bạn chuyển đổi bộ sưu tập MongoDB thành DataFrame bằng cách nối thêm Sê-ri vào DataFrame trống ban đầu thực sự không hiệu quả. DataFrame hoàn toàn có khả năng đọc bộ sưu tập MongoDB của bạn và thực hiện điều đó với ít mã hơn để bạn viết |