Tài liệu về nhà → MongoDB Atlas → MongoDB Atlas
Bạn có thể mang dữ liệu từ các tệp triển khai MongoDB hiện tại, JSON
hoặc CSV
vào các triển khai trong ATLAS bằng cách sử dụng:
di cư trực tiếp nơi Atlas hỗ trợ bạn, hoặc
Các công cụ để di chuyển dữ liệu tự hướng dẫn từ các triển khai hiện tại của bạn vào Atlas.
Bảng sau đây thảo luận về cách chọn giữa các công cụ khác nhau để di chuyển và nhập dữ liệu cho các cấu hình cụm phổ biến.
Để chuyển dữ liệu đến một ví dụ không có máy chủ, hãy sử dụng la bàn để xuất và nhập dữ liệu hoặc di chuyển dữ liệu bằng các công cụ tự quản lý. Để tìm hiểu thêm, hãy xem các giới hạn cá thể không có máy chủ.use Compass to export and import data, or migrate data with self-managed tools. To learn more, see Serverless Instance Limitations.
Để tải dữ liệu vào một cụm mới trong Atlas, hãy xem tải dữ liệu mẫu.
Để tạo một bản sao của cụm của bạn cho mục đích thử nghiệm, hãy xem các phương thức sao lưu MongoDB.MongoDB Backup Methods.
Nếu ứng dụng mà bạn muốn di chuyển yêu cầu thời gian hoạt động gần liên tục, hãy liên hệ với hỗ trợ MongoDB và chia sẻ các yêu cầu thời gian hoạt động và cấu hình cụm của bạn.
Tài liệu về nhà → MongoDB Atlas cho chính phủ → MongoDB Atlas for Government
Dịch vụ di chuyển trực tiếp Atlas có thể di chuyển dữ liệu của bạn từ môi trường hiện tại của bạn sang MongoDB Atlas cho chính phủ với tác động tối thiểu đến ứng dụng của bạn. Các thủ tục dịch vụ di chuyển trực tiếp cho ATLAS cũng được áp dụng cho Atlasgov.
Để biết tổng quan về dịch vụ và hướng dẫn cho các cuộc di cư chung, xem Atlas Live Di cư.Atlas Live Migration.
Mẹo
Tài liệu Atlas
Để biết thông tin chi tiết về nhập dữ liệu, hãy xem di chuyển hoặc nhập dữ liệu vào cụm của bạn.Migrate or Import Data into Your Cluster.
← & NBSP; Sao lưu và khôi phục cụm Dataatlas tìm kiếm & NBSP; →Backup and Restore Cluster DataAtlas Search →
Tài liệu về nhà → Bắt đầu với hướng dẫn → Start with Guides
Trong hướng dẫn này, bạn sẽ tải dữ liệu mẫu của chúng tôi vào cụm của mình.
Thời gian cần thiết: 5 phút
Một tài khoản MongoDB. Xem Đăng ký tài khoản MongoDB.
Một cụm Atlas. Xem Tạo một cụm.
Ghi chú
Nếu Atlas nhắc bạn chọn dữ liệu nào để tải, hãy chọn sample_guides
.
Khi tải hoàn thành, tab Bộ sưu tập sẽ làm mới để hiển thị dữ liệu mẫu của bạn.Collections tab refreshes to show your sample data.
Bạn thấy các cơ sở dữ liệu sau trong cụm của bạn:
| Chứa chi tiết trong danh sách Airbnb.AirBnB listings. |
| Chứa dữ liệu đào tạo cho một ứng dụng dịch vụ tài chính giả. |
| Chứa dữ liệu Shipwreck. |
| Chứa dữ liệu hành tinh. |
| Chứa dữ liệu phim. |
| Chứa dữ liệu nhà hàng. |
| Chứa dữ liệu từ một cửa hàng cung cấp văn phòng giả. |
| Chứa bộ dữ liệu dịch vụ đào tạo MongoDB. |
| Chứa báo cáo thời tiết chi tiết. |
Nếu bạn đã hoàn thành thành công quy trình trong hướng dẫn này, bạn đã tải dữ liệu mẫu của chúng tôi.
Trong hướng dẫn tiếp theo, bạn sẽ truy xuất chuỗi kết nối triển khai cơ sở dữ liệu của mình.
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.
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ết
Hướ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ư CSV
2.CSV
2.
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 CSV
3. Nếu bạn đã cài đặt MongoDB trên máy trạm của mình thì bạn có thể đã cài đặt CSV
3. Nếu không, hãy làm theo các hướng dẫn này trên trang web MongoDB để cài đặt nó.CSV
3. If you have MongoDB installed on your workstation then you may already have CSV
3 installed. If not, follow
these instructions on the MongoDB website to install it.
Bắt đầu với
CSV
3
CSV
3 là một công cụ dòng lệnh mạnh mẽ để nhập dữ liệu từ các tệp JSON, CSV và TSV vào các bộ sưu tập MongoDB. Đó là siêu nhanh và nhiều luồng, vì vậy trong nhiều trường hợp sẽ nhanh hơn bất kỳ tập lệnh tùy chỉnh nào bạn có thể viết để làm điều tương tự. CSV
3 Sử dụng có thể được kết hợp với một số công cụ dòng lệnh khác, chẳng hạn như CSV
2 cho thao tác JSON hoặc CSV
9 để thao tác CSV hoặc thậm chí sample_guides
0 để tải xuống các tệp dữ liệu từ máy chủ trên Internet. Như với nhiều công cụ dòng lệnh, các tùy chọn là vô tận! is a powerful command-line tool for importing data from JSON, CSV, and TSV files into MongoDB collections. It's super-fast and
multi-threaded, so in many cases will be faster than any custom script you might write to do the same thing. CSV
3 use can be combined with some other command-line tools, such as CSV
2 for JSON manipulation, or CSV
9 for CSV manipulation, or even sample_guides
0 for dynamically downloading data files from servers on the internet. As with many command-line tools, the options are endless!
Chọn định dạng dữ liệu nguồn
Theo 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 CSV
3 chấp nhận.CSV
3
accepts.
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, CSV
3 sẽ cố gắng đưa ra các lựa chọn hợp lý khi xác định loại trường cụ thể, chẳng hạn như sample_guides
3 hoặc sample_guides
4. Hành vi này có thể được ghi đè với việc sử dụng một số cờ và bạn có thể chỉ định các loại nếu bạn muốn. Trên hết, CSV
3 cung cấp một số cơ sở cho ngày phân tích cú pháp và các loại khác ở các định dạng khác nhau.CSV
3 will attempt to make sensible choices when identifying the type of a specific field, such as sample_guides
3 or sample_guides
4. This behaviour can be overridden with the use of some
flags, and you can specify types if you want to. On top of that, CSV
3 supplies some facilities for parsing dates and other types in different formats.
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
CSV
3
đến cơ sở dữ liệu của bạn
Phầ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 sample_guides
7.sample_guides
7.
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 sample_guides
8. Nếu bạn đang sử dụng Atlas, bạn có thể nhận URI kết nối phù hợp từ giao diện Atlas, bằng cách nhấp vào nút "Kết nối" của cụm và chọn "Kết nối ứng dụng của bạn". .sample_guides
8 option. If you're using Atlas you can get the appropriate connection URI from the Atlas interface, by clicking on your cluster's "Connect" button and selecting "Connect your Application". [Atlas is being continuously developed, so these instructions may be slightly out of date.] Set the URI as the value of your sample_guides
8 option, and replace the username and password with the appropriate values:
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 sample-airbnb
0 và sample-airbnb
1 thay thế: thay vào đó: that in this form the username and password must be URL-encoded. If you don't want to worry about this, then provide the username and password using the sample-airbnb
0 and sample-airbnb
1 options instead:
Nếu bạn bỏ qua mật khẩu từ URI và không cung cấp tùy chọn sample-airbnb
1, thì CSV
3 sẽ nhắc bạn nhận mật khẩu trên dòng lệnh. Trong tất cả các trường hợp này, sử dụng các trích dẫn đơn xung quanh các giá trị, như tôi đã thực hiện, sẽ giúp bạn tiết kiệm các vấn đề trong thời gian dài!sample-airbnb
1 option, then CSV
3 will prompt you for a password on the command-line. In all these cases, using single-quotes around values, as I've done, will save you problems in the long-run!
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: sample-airbnb
4. Nếu bạn đang chạy một bản sao [và bạn nên!] Sau đó, bạn có nhiều tên máy chủ để kết nối và bạn không biết trước đó là cái chính. Trong trường hợp này, URI của bạn sẽ bao gồm một loạt các máy chủ trong cụm của bạn [bạn không cần cung cấp tất cả các máy chủ của cụm của bạn, cung cấp một trong số chúng có sẵn] và Mongoimport sẽ tự động khám phá và kết nối với chính. Một URI bản sao trông như thế này: sample-airbnb
5.not connecting to an Atlas database, then you'll have to generate your own URI. If you're connecting to a single server [i.e. you don't have a replicaset], then your URI will look like this: sample-airbnb
4. If you're running a replicaset [and you should!] then you have more than one hostname to
connect to, and you don't know in advance which is the primary. In this case, your URI will consist of a series of servers in your cluster [you don't need to provide all of your cluster's servers, providing one of them is available], and mongoimport will discover and connect to the primary automatically. A replicaset URI looks like this: sample-airbnb
5.
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 JSON
Cá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 sample-airbnb
6 để chỉ định một tệp. Theo tôi, tình huống tốt nhất là bạn có một thư mục đầy đủ các tệp JSON cần được nhập. Lý tưởng nhất là mỗi tệp JSON chứa một tài liệu bạn muốn nhập vào MongoDB, nó nằm trong cấu trúc chính xác và mỗi giá trị thuộc loại chính xác. Sử dụng tùy chọn này khi bạn muốn nhập một tệp duy nhất làm tài liệu duy nhất vào bộ sưu tập MongoDB.sample-airbnb
6 option to specify a file. In my opinion, the very best situation is that you have a directory full of JSON files which need to be imported. Ideally each JSON file contains one document you wish to import into MongoDB, it's in the
correct structure, and each of the values is of the correct type. Use this option when you wish to import a single file as a single document into a MongoDB collection.
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 sample-airbnb
7. Bạn không cần phải tạo bộ sưu tập trước.sample-airbnb
7. You don't have to create the collection in advance.
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ị sample-airbnb
8 trong mỗi tài liệu cho bạn. Điều này là do MongoDB yêu cầu mọi tài liệu phải có một sample-airbnb
8 duy nhất, nhưng bạn không cung cấp một tài liệu. Tôi sẽ đề cập nhiều hơn về điều này trong thời gian ngắn.MongoDB Compass or another tool to connect to the collection you just created, you'll see that MongoDB also generated an sample-airbnb
8 value in each document for you. This is because MongoDB requires every document to have a unique sample-airbnb
8, but
you didn't provide one. I'll cover more on this shortly.
Nhập nhiều tài liệu JSON
Mongoimport sẽ chỉ nhập một tệp tại một thời điểm với tùy chọn sample-airbnb
6, nhưng bạn có thể hiểu được điều này bằng cách đưa nhiều tài liệu JSON vào Mongoimport từ một công cụ khác, chẳng hạn như sample-analytics
1. Điều này nhanh hơn là nhập một tệp tại một thời điểm, chạy Mongoimport từ một vòng lặp, vì bản thân Mongoimport được đa luồng để tải lên nhanh hơn của nhiều tài liệu. Với một thư mục chứa đầy các tệp JSON, trong đó mỗi tệp JSON nên được nhập dưới dạng tài liệu MongoDB riêng biệt có thể được nhập bằng ____ 42-ing vào thư mục chứa các tệp JSON và chạy:sample-airbnb
6 option, but you can get around this by piping multiple JSON documents into mongoimport from another tool, such as sample-analytics
1. This is faster than importing one file at a time, running mongoimport from a loop, as mongoimport itself is
multithreaded for faster uploads of multiple documents. With a directory full of JSON files, where each JSON file should be imported as a separate MongoDB document can be imported by sample-analytics
2-ing to the directory that contains the JSON files and running:
Như trước đây, MongoDB tạo ra một sample-airbnb
8 mới cho mỗi tài liệu được chèn vào bộ sưu tập MongoDB, vì chúng không có trong dữ liệu nguồn.sample-airbnb
8 for each document inserted into the MongoDB collection, because they're not contained in the source data.
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 sample-airbnb
6, sử dụng tùy chọn sample-analytics
5:sample-airbnb
6 option, using the sample-analytics
5 option:
Nếu bạn quên thêm tùy chọn --JsonArray, CSV
3 sẽ thất bại với lỗi "Không thể giải mã mảng vào tài liệu." Điều này là do các tài liệu tương đương với các đối tượng JSON, không phải mảng. Bạn có thể lưu trữ một mảng dưới dạng _value_ trên một tài liệu, nhưng một tài liệu không thể là một mảng.CSV
3 will fail with the error "cannot decode array into a Document." This is because documents are equivalent to JSON objects, not arrays. You can store an array as a _value_ on a document, but a document cannot be an array.
Nhập các loại cụ thể của MongoDB với JSON
Nế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:
Các giá trị của
sample-analytics
7 vàsample-analytics
8 phải là các loại "ngày" chứ không phải "chuỗi".sample-analytics
7 andsample-analytics
8 should be "date" types, not "string".MongoDB hỗ trợ các điểm địa lý, nhưng không nhận ra sự vĩ độ và kinh độ của các trạm bắt đầu và dừng các trạm như vậy.
Đ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ống
Khi nhập dữ liệu vào một bộ sưu tập đã chứa tài liệu, giá trị sample-airbnb
8 của bạn là quan trọng. Nếu các tài liệu đến của bạn không chứa các giá trị sample-airbnb
8, thì các giá trị mới sẽ được tạo và gán cho các tài liệu mới khi chúng được thêm vào bộ sưu tập. Nếu các tài liệu đến của bạn có chứa các giá trị sample-airbnb
8, thì chúng sẽ được kiểm tra đối với các tài liệu hiện có trong bộ sưu tập. Giá trị sample-airbnb
8 phải là duy nhất trong một bộ sưu tập. Theo mặc định, nếu tài liệu đến có giá trị sample-airbnb
8 đã tồn tại trong bộ sưu tập, thì tài liệu sẽ bị từ chối và lỗi sẽ được ghi lại. Chế độ này [mặc định] được gọi là "Chế độ chèn". Tuy nhiên, có các chế độ khác hoạt động khác nhau khi một tài liệu phù hợp được nhập bằng CSV
3.sample-airbnb
8 value is important. If your incoming documents don't contain
sample-airbnb
8 values, then new values will be created and assigned to the new documents as they are added to the collection. If your incoming documents do contain sample-airbnb
8 values, then they will be checked against existing documents in the collection. The sample-airbnb
8 value must be unique within a collection. By default, if the incoming document has an sample-airbnb
8 value that already exists in the collection, then
the document will be rejected and an error will be logged. This mode [the default] is called "insert mode". There are other modes, however, that behave differently when a matching document is imported using CSV
3.
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 CSV
3 để cập nhật hiệu quả dữ liệu trong bộ sưu tập của mình. Nếu dữ liệu đầu vào của bạn được cung cấp một mã định danh ổn định, hãy sử dụng trường đó làm trường sample-airbnb
8 và cung cấp tùy chọn sample-geospatial
7. Chế độ này Willinsert một tài liệu mới nếu giá trị sample-airbnb
8 hiện không có trong bộ sưu tập. Nếu giá trị sample-airbnb
8 đã tồn tại trong một tài liệu, thì tài liệu đó sẽ bị ghi đè bởi dữ liệu tài liệu mới.CSV
3 to efficiently update the data in your collection. If your input data is supplied
with a stable identifier, use that field as the sample-airbnb
8 field, and supply the option sample-geospatial
7. This mode willinsert a new document if the sample-airbnb
8 value is not currently present in the collection. If the sample-airbnb
8 value already exists in a document, then that document will be overwritten by the new document data.
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 sample-guides
0. Nếu bạn đang sử dụng nhiều tên trường, hãy tách các giá trị này bằng dấu phẩy:sample-guides
0 option. If you're using more than one field name, separate these values with a comma:
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 CSV
3 với "Chế độ hợp nhất". Nếu dữ liệu đầu vào của bạn được cung cấp một mã định danh ổn định, hãy sử dụng trường đó làm trường sample-airbnb
8 và cung cấp tùy chọn sample-guides
3. Chế độ này sẽ chèn một tài liệu mới nếu giá trị sample-airbnb
8 hiện không có trong bộ sưu tập. Nếu giá trị sample-airbnb
8 đã tồn tại trong một tài liệu, thì tài liệu đó sẽ bị ghi đè bởi dữ liệu tài liệu mới.extend your existing documents by adding new fields, or update certain fields, you can use CSV
3 with "merge mode". If your input data is supplied with a stable identifier, use that field as the sample-airbnb
8 field, and supply the option sample-guides
3. This mode will insert a new document if the sample-airbnb
8 value is not currently present in the collection. If the sample-airbnb
8 value already
exists in a document, then that document will be overwritten by the new document data.
Bạn cũng có thể sử dụng tùy chọn sample-guides
0 ở đây cũng như khi bạn đang thực hiện UPSERT, để phù hợp với các tài liệu bạn muốn cập nhật.sample-guides
0 option here as well as when you're doing upserts, to match the documents you want to update.
Nhập CSV [hoặc TSV] vào một bộ sưu tập
Nế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 sample-guides
7 hoặc sample-guides
8 để nói CSV
3 Định dạng nào mong đợi. Cũng quan trọng là phải biết liệu tệp CSV của bạn có hàng tiêu đề hay không - trong đó dòng đầu tiên không chứa dữ liệu - thay vào đó nó chứa tên cho mỗi cột. Nếu bạn có hàng tiêu đề, bạn nên sử dụng tùy chọn sample-mflix
0 để nói với CSV
3 rằng dòng đầu tiên không nên được nhập dưới dạng tài liệu.sample-guides
7 or
sample-guides
8 option to tell CSV
3 what format to expect. Also important is to know whether your CSV file has a header row - where the first line doesn't contain data - instead it contains the name for each column. If you do have a header row, you should use the sample-mflix
0 option to tell CSV
3 that the first line should not be imported as a document.
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à:
Dữ liệu CSV là "phẳng" - Không có cách nào tốt để nhúng các công cụ phụ vào một hàng của tệp CSV, vì vậy bạn có thể muốn tái cấu trúc dữ liệu để phù hợp với cấu trúc bạn muốn có trong các tài liệu MongoDB của mình.
Dữ liệu CSV không bao gồm thông tin loại.
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 CSV
3 để nhập dữ liệu. Một cách tiếp cận khác có thể là nhập dữ liệu vào MongoDB và sau đó chạy một đường ống tổng hợp để chuyển đổi dữ liệu thành cấu trúc cần thiết của bạn.before using CSV
3 to import the data. Another approach could be to import the data into MongoDB and then run an aggregation pipeline to transform the data into your required structure.
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 CSV
3.CSV
3.
Chỉ định các loại trường
Nếu bạn không có hàng tiêu đề, thì bạn phải nói CSV
3 Tên của từng cột của bạn, để CSV
3 biết những gì sẽ gọi mỗi trường trong mỗi tài liệu sẽ được nhập. Có hai phương thức để thực hiện điều này: bạn có thể liệt kê các tên trường trên dòng lệnh với tùy chọn sample-mflix
6 hoặc bạn có thể đặt tên trường vào một tệp và trỏ đến tùy chọn sample-mflix
7.CSV
3 the name of each of your columns, so that CSV
3 knows what to call each of the fields in each of the documents to be imported. There are two methods to do this: You can list the field names on the command-line with the sample-mflix
6 option, or you can put the field names in a file, and point to it with the sample-mflix
7 option.
Đó 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ường
Tệ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ị sample-mflix
6 từ cuộc gọi ở trên trông như thế này:sample-mflix
6
value from the call above looks like this:
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 'Field_Option' hoặc 'FieldFile_Option', bạn sẽ thấy rằng CSV
3 đã tự động chuyển đổi các loại số nguyên thành sample_guides
3 và giữ các giá trị vĩ độ và độ cao là sample-restaurants
1 con số. Tuy nhiên, trong một số trường hợp, MongoDB có thể đưa ra quyết định không chính xác. Trong ảnh chụp màn hình ở trên, bạn có thể thấy rằng các trường 'Starttime' và 'Stoptime' đã được nhập dưới dạng chuỗi. Lý tưởng nhất là chúng đã được nhập khẩu dưới dạng loại BSON, hiệu quả hơn để lưu trữ và lọc.CSV
3 has automatically converted integer types to sample_guides
3 and kept the latitude and longitude values as sample-restaurants
1 which is a real type, or floating-point number. In some cases, though, MongoDB may make an
incorrect decision. In the screenshot above, you can see that the 'starttime' and 'stoptime' fields have been imported as strings. Ideally they would have been imported as a BSON date type, which is more efficient for storage and filtering.
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 CSV
3 Bạn muốn chỉ định loại của một số hoặc tất cả các trường của bạn, bạn nên sử dụng tùy chọn sample-restaurants
3. Cũng như sử dụng tùy chọn sample-restaurants
3, bạn sẽ cần chỉ định các loại trường của mình. Nếu bạn đang sử dụng tùy chọn sample-mflix
6, bạn có thể thêm thông tin loại vào giá trị đó, nhưng tôi khuyên bạn nên thêm dữ liệu loại vào tệp trường. Bằng cách này, nó sẽ dễ đọc và duy trì hơn, và đó là những gì tôi sẽ chứng minh ở đây.CSV
3 you
wish to specify the type of some or all of your fields, you should use the sample-restaurants
3 option. As well as using the sample-restaurants
3 option, you will need to specify the types of your fields. If you're using the sample-mflix
6 option, you can add type information to that value, but I highly recommend adding type data to the field file. This way it should be more readable and maintainable, and that's what I'll demonstrate here.
Tôi đã tạo một tệp có tên sample-restaurants
6 và nhập sau:sample-restaurants
6, and entered the following:
Bởi vì CSV
3 đã làm đúng với hầu hết các trường, tôi đã đặt chúng thành sample-restaurants
8 - thông tin loại xuất hiện sau một khoảng thời gian [sample-restaurants
9]. Hai trường thời gian, sample-analytics
7 và sample-analytics
8 đã được nhập không chính xác dưới dạng chuỗi, vì vậy trong những trường hợp này, tôi đã chỉ định rằng chúng nên được coi là loại sample-supplies
2. Nhiều loại có đối số bên trong dấu ngoặc đơn. Trong trường hợp loại sample-supplies
2, nó hy vọng đối số sẽ là một ngày được định dạng theo cùng một cách bạn mong đợi các giá trị của cột được định dạng. Xem tài liệu tham khảo để biết thêm chi tiết.CSV
3 already did the right thing with most of the fields, I've set them to sample-restaurants
8 - the type information comes after a period [sample-restaurants
9]. The two time
fields, sample-analytics
7 and sample-analytics
8 were being incorrectly imported as strings, so in these cases I've specified that they should be treated as a sample-supplies
2 type. Many of the types take arguments inside the parentheses. In the case of the sample-supplies
2 type, it expects the argument to be a date formatted in the same way you expect the column's values to be formatted. See the
reference documentation for more details.
Bây giờ, dữ liệu có thể được nhập với cuộc gọi sau đến CSV
3:CSV
3:
Và phần còn lại
Hy vọng bây giờ bạn có một ý tưởng tốt về cách sử dụng CSV
3 và về mức độ linh hoạt của nó! Tôi đã không bao gồm gần như tất cả các tùy chọn có thể được cung cấp cho CSV
3, tuy nhiên, chỉ là những tùy chọn quan trọng nhất. Những người khác mà tôi thấy hữu ích thường xuyên là:CSV
3 and of how flexible it is! I haven't covered nearly all of the options that can be provided to CSV
3, however, just the most important ones. Others I find useful frequently are:
sample-supplies 7 | Bỏ qua các trường hoặc cột có giá trị trống. |
sample-supplies 8 | Thả bộ sưu tập trước khi nhập các tài liệu mới. Điều này đặc biệt hữu ích trong quá trình phát triển, nhưng sẽ mất dữ liệu nếu bạn vô tình sử dụng nó.will lose data if you use it accidentally. |
sample-supplies 9 | Một tùy chọn khác hữu ích trong quá trình phát triển, điều này khiến CSV 3 dừng lại ngay khi xảy ra lỗi.CSV 3 to stop immediately when an error occurs.
|
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: CSV
2 Một công cụ thao tác JSON và CSV
9 Một công cụ tương tự để làm việc với các tệp CSV.other command-line programs to provide more power. There are a couple of command-line programs that I particularly recommend you look at: CSV
2 a JSON manipulation tool, and CSV
9 a similar tool for working with CSV files.
Jq
JQ 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ó tên CSV
03 chứa các mục sau:CSV
03 containing the following:
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 sample-analytics
7 và sample-analytics
8 để chúng được nhập vào MongoDB dưới dạng các loại CSV
06:sample-analytics
7 and sample-analytics
8 fields so that they will be imported into MongoDB as CSV
06 types:
Đ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 CSV
3 thông qua CSV
2.CSV
3 via CSV
2.
Công cụ CSV
2 có thể hơi khó hiểu lúc đầu, nhưng một khi bạn bắt đầu hiểu ngôn ngữ hoạt động như thế nào, nó rất mạnh mẽ và rất nhanh. Tôi đã cung cấp một ví dụ SCRIPT JQ phức tạp hơn trong repo data data data, được gọi là CSV
10. Kiểm tra nó để biết thêm ý tưởng và tài liệu đầy đủ trên trang web JQ.CSV
2 tool can be a little fiddly to understand at first, but once you start to understand how the language works, it is very powerful, and very fast. I've provided a
more complex JQ script example in the sample data GitHub repo, called CSV
10. Check it out for more ideas, and the full documentation on the JQ website.
CSVKIT
Theo cùng một cách mà CSV
2 là một công cụ để lọc và điều khiển dữ liệu JSON, CSV
9 là một bộ sưu tập nhỏ các công cụ để lọc và thao tác dữ liệu CSV. Một số công cụ, trong khi hữu ích theo cách riêng của chúng, không có khả năng hữu ích khi kết hợp với CSV
3. Các công cụ như CSV
14 lọc các hàng tệp CSV dựa trên các biểu thức và CSV
15 có thể xóa toàn bộ cột khỏi đầu vào CSV, là các công cụ hữu ích để cắt và cắt dữ liệu của bạn trước khi cung cấp nó cho CSV
3.CSV
2 is a tool for filtering and manipulating JSON data, CSV
9 is a small collection of tools for filtering and manipulating CSV data. Some of the tools, while useful in their own right, are unlikely to be useful when combined with CSV
3. Tools like CSV
14 which filters csv file rows based on expressions, and CSV
15 which can remove whole columns from
CSV input, are useful tools for slicing and dicing your data before providing it to CSV
3.
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 CSV
3 không? Bạn có một ví dụ tuyệt vời về việc sử dụng CSV
18 để xử lý dữ liệu bảng trước khi nhập vào MongoDB không? Hãy cho chúng tôi biết trên các diễn đàn cộng đồng!CSV
3? Do you have a great example of using CSV
18 to handle tabular data before importing into MongoDB? Let us know on the community forums!
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 CSV
3 mạnh như thế nào là một công cụ để nhập dữ liệu vào MongoDB một cách nhanh chóng và hiệu quả. Kết hợp với các công cụ dòng lệnh đơn giản khác, đó là một cách nhanh chóng và linh hoạt để nhập dữ liệu của bạn vào MongoDB.CSV
3 is as a tool for importing data into MongoDB quickly and efficiently. Combined with other simple command-line tools, it's both a fast and flexible way to import your data into MongoDB.