Hướng dẫn how do i import a collection in mongodb? - làm cách nào để nhập một bộ sưu tập trong mongodb?
Bất kể bạn đang xây dựng gì với MongoDB, đến một lúc nào đó bạn sẽ muốn nhập một số dữ liệu. Cho dù đó là phần lớn dữ liệu của bạn hoặc chỉ một số dữ liệu tham chiếu mà bạn muốn tích hợp với bộ dữ liệu chính của mình, bạn sẽ thấy mình với một loạt các tệp JSON hoặc CSV mà bạn cần nhập vào một bộ sưu tập. May mắn thay, MongoDB cung cấp một công cụ gọi là Mongoimport được thiết kế cho nhiệm vụ này. Hướng dẫn này sẽ giải thích cách sử dụng Mongoimport hiệu quả để đưa dữ liệu của bạn vào cơ sở dữ liệu MongoDB của bạn.mongoimport which is designed for this task. This guide will explain how to effectively use mongoimport to get your data into your MongoDB database. Show Chúng tôi cũng cung cấp tài liệu tham khảo Mongoimport, nếu bạn đang tìm kiếm một cái gì đó toàn diện hoặc bạn chỉ cần tìm kiếm một tùy chọn dòng lệnh.MongoImport Reference documentation, if you're looking for something comprehensive or you just need to look up a command-line option. Điều kiện tiên quyếtHướng dẫn này giả định rằng bạn có thể thoải mái một cách hợp lý với dòng lệnh. Hầu hết các hướng dẫn sẽ chỉ chạy các lệnh, nhưng đến cuối cùng, tôi sẽ chỉ ra cách thực hiện dữ liệu thông qua một số công cụ dòng lệnh, chẳng hạn như Nếu bạn không có nhiều kinh nghiệm trên dòng lệnh (đôi khi cũng được gọi là thiết bị đầu cuối, hoặc shell hoặc bash), tại sao không làm theo cùng với một số ví dụ? Đó là một cách tuyệt vời để bắt đầu. Các ví dụ được hiển thị đều được viết trên macOS, nhưng nên chạy trên bất kỳ hệ thống loại UNIX nào. Nếu bạn đang chạy trên Windows, tôi khuyên bạn nên chạy các lệnh ví dụ bên trong hệ thống con Windows cho Linux.Windows Subsystem for Linux. Bạn sẽ cần một cơ sở dữ liệu MongoDB tạm thời để kiểm tra các lệnh này. Nếu bạn mới bắt đầu, tôi khuyên bạn nên đăng ký tài khoản Atlas MongoDB miễn phí và sau đó chúng tôi sẽ chăm sóc cụm cho bạn!MongoDB Atlas account, and then we'll take care of the cluster for you! Và tất nhiên, bạn sẽ cần một bản sao của Bắt đầu với
Chọn định dạng dữ liệu nguồnTheo nhiều cách, việc có dữ liệu nguồn của bạn trong các tệp JSON tốt hơn CSV (và TSV). JSON vừa là định dạng dữ liệu phân cấp, như tài liệu MongoDB và cũng rõ ràng về các loại dữ liệu mà nó mã hóa. Mặt khác, dữ liệu JSON nguồn có thể khó xử lý - trong nhiều trường hợp, nó không nằm trong cấu trúc bạn muốn hoặc nó có dữ liệu số được mã hóa dưới dạng chuỗi hoặc có lẽ các định dạng ngày không ở dạng Dữ liệu CSV (và TSV) là bảng và mỗi hàng sẽ được nhập vào MongoDB dưới dạng tài liệu riêng biệt. Điều này có nghĩa là các định dạng này không thể hỗ trợ dữ liệu phân cấp theo cách tương tự như tài liệu MongoDB có thể. Khi nhập dữ liệu CSV vào MongoDB, Trong nhiều trường hợp, việc lựa chọn định dạng dữ liệu nguồn sẽ không tùy thuộc vào bạn - sẽ tùy thuộc vào tổ chức tạo dữ liệu và cung cấp cho bạn. Tôi khuyên bạn nên nếu dữ liệu nguồn ở dạng CSV thì bạn không nên cố gắng chuyển đổi nó thành JSON trước khi bạn có kế hoạch tái cấu trúc nó. Liên kết
đến cơ sở dữ liệu của bạnPhần này giả định rằng bạn đang kết nối với một thiết lập tương đối đơn giản - với cơ sở dữ liệu xác thực mặc định và một số xác thực được thiết lập. (Bạn nên luôn luôn tạo một số người dùng để xác thực!)alwayscreate some users for authentication!) Nếu bạn không cung cấp bất kỳ chi tiết kết nối nào cho Mongoimport, nó sẽ cố gắng kết nối với MongoDB trên máy cục bộ của bạn, trên cổng 27017 (là mặc định của MongoDB). Điều này giống như cung cấp Một uri để cai trị tất cảCó một số tùy chọn cho phép bạn cung cấp thông tin kết nối riêng cho Mongoimport, nhưng tôi khuyên bạn nên sử dụng tùy chọn Xin lưu ý rằng trong mẫu này, tên người dùng và mật khẩu phải được mã hóa URL. Nếu bạn không muốn lo lắng về điều này, thì hãy cung cấp tên người dùng và mật khẩu bằng các tùy chọn Nếu bạn bỏ qua mật khẩu từ URI và không cung cấp tùy chọn Nếu bạn không kết nối với cơ sở dữ liệu ATLAS, thì bạn sẽ phải tạo URI của riêng mình. Nếu bạn đang kết nối với một máy chủ duy nhất (tức là bạn không có bản sao), thì URI của bạn sẽ trông như thế này: Khi bạn đã xác định URI, thì niềm vui bắt đầu. Trong phần còn lại của hướng dẫn này, tôi sẽ bỏ những lá cờ đó ra. Bạn sẽ cần thêm chúng vào khi thử các tùy chọn khác nhau. Nhập một tài liệu JSONCách đơn giản nhất để nhập một tệp duy nhất vào MongoDB là sử dụng tùy chọn Bạn sẽ tìm thấy dữ liệu ở định dạng này trong thư mục 'File_per_document' trong repo data data data. Mỗi tài liệu sẽ trông như thế này:sample data GitHub repo. Each document will look like this: Lệnh trên sẽ nhập tất cả các tệp JSON vào bộ sưu tập Nếu bạn sử dụng Compass MongoDB hoặc một công cụ khác để kết nối với bộ sưu tập bạn vừa tạo, bạn sẽ thấy MongoDB cũng tạo ra giá trị Nhập nhiều tài liệu JSONMongoimport sẽ chỉ nhập một tệp tại một thời điểm với tùy chọn Như trước đây, MongoDB tạo ra một Nhập một mảng json lớnĐôi khi bạn sẽ có nhiều tài liệu có trong mảng JSON trong một tài liệu, giống như sau: Bạn có thể nhập dữ liệu ở định dạng này bằng tùy chọn Nếu bạn quên thêm tùy chọn --JsonArray, Nhập các loại cụ thể của MongoDB với JSONNếu bạn nhập một số dữ liệu JSON từ repo dữ liệu mẫu và sau đó xem lược đồ của bộ sưu tập trong la bàn, bạn có thể nhận thấy một vài vấn đề:sample data github repo and then view the collection's schema in Compass, you may notice a couple of problems:
Điều này xuất phát từ một sự khác biệt cơ bản giữa các tài liệu MongoDB và tài liệu JSON. Mặc dù các tài liệu MongoDB thường trông giống như dữ liệu JSON, nhưng chúng không phải vậy. MongoDB lưu trữ dữ liệu dưới dạng BSON. BSON có nhiều lợi thế so với JSON. Nó nhỏ gọn hơn, nó nhanh hơn để vượt qua và nó hỗ trợ nhiều loại hơn JSON. Trong số các loại đó là ngày, loại Geojson, dữ liệu nhị phân và số thập phân. Tất cả các loại được liệt kê trong tài liệu MongoDBlook like JSON data, they're not. MongoDB stores data as BSON. BSON has multiple advantages over JSON. It's more compact, it's faster to traverse, and it supports more types than JSON. Among those types are Dates, GeoJSON types, binary data, and decimal numbers. All the types are listed in the MongoDB documentation Nếu bạn muốn MongoDB nhận ra các trường được nhập từ JSON dưới dạng các loại BSON cụ thể, các trường đó phải được thao tác để chúng tuân theo một cấu trúc mà chúng tôi gọi là JSON mở rộng. Điều này có nghĩa là trường sau:Extended JSON. This means that the following field: Phải được cung cấp cho MongoDB như: để nó được công nhận là loại ngày. Lưu ý rằng định dạng của chuỗi ngày đã thay đổi một chút, với 'T' phân tách ngày và thời gian và z ở cuối, biểu thị thời gian UTC.Date type. Note that the format of the date string has changed slightly, with the 'T' separating the date and time, and the Z at the end, indicating UTC timezone. Tương tự, vĩ độ và kinh độ phải được chuyển đổi thành loại điểm Geojson nếu bạn muốn tận dụng khả năng tìm kiếm dữ liệu vị trí của MongoDB. Hai giá trị: Lưu ý: cặp giá trị là kinh độ sau đó vĩ độ, vì điều này đôi khi khiến mọi người ra ngoài!: the pair of values are longitude then latitude, as this sometimes catches people out! Khi bạn có dữ liệu không gian địa lý trong bộ sưu tập của mình, bạn có thể sử dụng các truy vấn không gian địa lý của MongoDB để tìm kiếm dữ liệu theo vị trí.geospatial queries to search for data by location. Nếu bạn cần chuyển đổi dữ liệu JSON của mình theo cách này, hãy xem phần trên JQ.JQ. Nhập dữ liệu vào các bộ sưu tập không trốngKhi nhập dữ liệu vào một bộ sưu tập đã chứa tài liệu, giá trị Cập nhật hồ sơ hiện cóNếu bạn được định kỳ cung cấp các tệp dữ liệu mới, bạn có thể sử dụng Nếu bạn đang nâng các bản ghi không có ID ổn định, bạn có thể chỉ định một số trường sẽ sử dụng để khớp với các tài liệu trong bộ sưu tập, với tùy chọn Hợp nhất dữ liệu vào các hồ sơ hiện cóNếu bạn được cung cấp với các tệp dữ liệu mở rộng các tài liệu hiện tại của bạn bằng cách thêm các trường mới hoặc cập nhật một số trường nhất định, bạn có thể sử dụng Bạn cũng có thể sử dụng tùy chọn Nhập CSV (hoặc TSV) vào một bộ sưu tậpNếu bạn có các tệp CSV (hoặc các tệp TSV - chúng giống nhau về mặt khái niệm) để nhập, hãy sử dụng tùy chọn Với dữ liệu CSV, bạn có thể phải thực hiện thêm một số công việc để chú thích dữ liệu để khiến nó nhập chính xác. Các vấn đề chính là:
Vấn đề đầu tiên là một vấn đề có lẽ lớn hơn. Bạn có hai tùy chọn. Một là viết một tập lệnh để tái cấu trúc dữ liệu trước khi sử dụng Cả hai cách tiếp cận này đều nằm ngoài phạm vi của bài đăng trên blog này. Nếu đó là điều bạn muốn thấy nhiều lời giải thích hơn, hãy truy cập các diễn đàn cộng đồng MongoDB.MongoDB Community Forums. Thực tế là các tệp CSV không chỉ định loại dữ liệu trong mỗi trường có thể được giải quyết bằng cách chỉ định các loại trường khi gọi Chỉ định các loại trườngNếu bạn không có hàng tiêu đề, thì bạn phải nói Đó là một hàng dài! Trong trường hợp có rất nhiều cột, bạn nên quản lý các tên trường trong một tệp trường. Sử dụng tệp trườngTệp trường là danh sách các tên cột, với một tên trên mỗi dòng. Vì vậy, tương đương với giá trị Nếu bạn đặt nội dung đó vào một tệp có tên là 'field_file.txt' và sau đó chạy lệnh sau, nó sẽ sử dụng các tên cột này làm tên trường trong MongoDB: Nếu bạn mở la bàn và nhìn vào lược đồ cho một trong hai trường_option 'hoặc' fieldfile_option ', bạn sẽ thấy rằng Trong trường hợp này, bạn sẽ muốn chỉ định loại của một số hoặc tất cả các cột của bạn. Chỉ định các loại cho các cột CSVĐể nói Tôi đã tạo một tệp có tên Bởi vì Bây giờ, dữ liệu có thể được nhập với cuộc gọi sau đến Và phần còn lạiHy vọng bây giờ bạn có một ý tưởng tốt về cách sử dụng
Một trong những lợi ích chính của các chương trình dòng lệnh là chúng được thiết kế để làm việc với các chương trình dòng lệnh khác để cung cấp nhiều quyền lực hơn. Có một vài chương trình dòng lệnh mà tôi đặc biệt khuyên bạn nên xem: JqJQ là bộ xử lý cho dữ liệu JSON. Nó kết hợp một ngôn ngữ lọc và kịch bản mạnh mẽ để lọc, thao tác và thậm chí tạo dữ liệu JSON. Một hướng dẫn đầy đủ về cách sử dụng JQ nằm ngoài phạm vi cho hướng dẫn này, nhưng để cung cấp cho bạn một bản tóm tắt ngắn gọn: Nếu bạn tạo tập lệnh JQ được gọi là Bây giờ bạn có thể gửi dữ liệu JSON mẫu thông qua tập lệnh này để sửa đổi các trường Điều này có thể được sử dụng trong một đường ống nhiều giai đoạn, trong đó dữ liệu được đưa vào Công cụ CSVKITTheo cùng một cách mà Kiểm tra các tài liệu CSVKIT để biết thêm thông tin về cách sử dụng bộ sưu tập công cụ này.csvkit docs for more information on how to use this collection of tools. Có những công cụ khác mà bạn biết sẽ hoạt động tốt với Sự kết luậnĐó là một sai lầm phổ biến khi viết mã tùy chỉnh để nhập dữ liệu vào MongoDB. Tôi hy vọng tôi đã chứng minh Làm cách nào để tôi xuất và nhập bộ sưu tập trong MongoDB?Procedure.. Kết nối với triển khai có chứa bộ sưu tập bạn muốn nhập dữ liệu vào. .... Điều hướng đến bộ sưu tập mục tiêu của bạn. .... Nhấp vào Thêm thả xuống dữ liệu và chọn Nhập tệp. .... Chọn vị trí của tệp dữ liệu nguồn trong tệp chọn .. Chọn loại tệp thích hợp. .... Định cấu hình các tùy chọn nhập. .... Nhấp vào nhập .. Làm cách nào để nhập một bộ sưu tập vào MongoDB Atlas?Bạn có thể sử dụng MongoImport để nhập dữ liệu từ tệp JSON hoặc tệp CSV vào cụm MongoDB Atlas ... Trong phần bảo mật của điều hướng bên trái, nhấp vào truy cập cơ sở dữ liệu. Tab người dùng cơ sở dữ liệu hiển thị .. Nhấp vào Thêm người dùng cơ sở dữ liệu mới .. Thêm người dùng Atlas Admin .. Làm cách nào để nhập một lược đồ vào MongoDB?Bạn có thể xuất lược đồ của mình sau khi phân tích nó ... Sao chép các tài liệu JSON ở trên .. Trong Compass MongoDB, chọn một bộ sưu tập hoặc tạo một bộ sưu tập mới để nhập các tài liệu được sao chép vào..... Nhấp vào Thêm dữ liệu .. Chọn Chèn tài liệu từ thả xuống .. Làm cách nào để nhập tệp CSV vào MongoDB?Bạn có thể sử dụng lệnh Mongoimport để nhập các tệp CSV vào một bộ sưu tập bằng tùy chọn Headerline.Tùy chọn tiêu đề thông báo cho lệnh Mongoimport của dòng đầu tiên;không được nhập dưới dạng tài liệu vì nó chứa tên trường thay vì dữ liệu. |