Hướng dẫn how do i import a database into mongodb atlas? - làm cách nào để nhập cơ sở dữ liệu vào tập bản đồ mongodb?

Tài liệu về nhà → MongoDB AtlasMongoDB 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ẫnStart 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.

Hướng dẫn how do i import a database into mongodb atlas? - làm cách nào để nhập cơ sở dữ liệu vào tập bản đồ mongodb?

Hướng dẫn how do i import a database into mongodb atlas? - làm cách nào để nhập cơ sở dữ liệu vào tập bản đồ mongodb?

Hướng dẫn how do i import a database into mongodb atlas? - làm cách nào để nhập cơ sở dữ liệu vào tập bản đồ mongodb?

Ghi chú

Nếu Atlas nhắc bạn chọn dữ liệu nào để tải, hãy chọn sample_guides.

Hướng dẫn how do i import a database into mongodb atlas? - làm cách nào để nhập cơ sở dữ liệu vào tập bản đồ mongodb?

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:

Tên dữ liệu

Sự mô tả

sample-airbnb

Chứa chi tiết trong danh sách Airbnb.AirBnB listings.

sample-analytics

Chứa dữ liệu đào tạo cho một ứng dụng dịch vụ tài chính giả.

sample-geospatial

Chứa dữ liệu Shipwreck.

sample-guides

Chứa dữ liệu hành tinh.

sample-mflix

Chứa dữ liệu phim.

sample-restaurants

Chứa dữ liệu nhà hàng.

sample-supplies

Chứa dữ liệu từ một cửa hàng cung cấp văn phòng giả.

CSV0

Chứa bộ dữ liệu dịch vụ đào tạo MongoDB.

CSV1

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ư CSV2.CSV2.

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 CSV3. 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 CSV3. 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ó.CSV3. If you have MongoDB installed on your workstation then you may already have CSV3 installed. If not, follow these instructions on the MongoDB website to install it.

Bắt đầu với

CSV3

CSV3 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ự. CSV3 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ư CSV2 cho thao tác JSON hoặc CSV9 để thao tác CSV hoặc thậm chí sample_guides0 để 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. CSV3 use can be combined with some other command-line tools, such as CSV2 for JSON manipulation, or CSV9 for CSV manipulation, or even sample_guides0 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 CSV3 chấp nhận.CSV3 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, CSV3 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_guides3 hoặc sample_guides4. 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, CSV3 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.CSV3 will attempt to make sensible choices when identifying the type of a specific field, such as sample_guides3 or sample_guides4. This behaviour can be overridden with the use of some flags, and you can specify types if you want to. On top of that, CSV3 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

CSV3

đế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_guides7.sample_guides7.

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_guides8. 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_guides8 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_guides8 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-airbnb0 và sample-airbnb1 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-airbnb0 and sample-airbnb1 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-airbnb1, thì CSV3 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-airbnb1 option, then CSV3 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-airbnb4. 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-airbnb5.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-airbnb4. 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-airbnb5.

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-airbnb6 để 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-airbnb6 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-airbnb7. Bạn không cần phải tạo bộ sưu tập trước.sample-airbnb7. You don't have to create the collection in advance.

Hướng dẫn how do i import a database into mongodb atlas? - làm cách nào để nhập cơ sở dữ liệu vào tập bản đồ mongodb?
Tài liệu nhập khẩu, được xem trong La bàn MongoDB

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-airbnb8 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-airbnb8 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-airbnb8 value in each document for you. This is because MongoDB requires every document to have a unique sample-airbnb8, 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-airbnb6, 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-analytics1. Đ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-airbnb6 option, but you can get around this by piping multiple JSON documents into mongoimport from another tool, such as sample-analytics1. 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-analytics2-ing to the directory that contains the JSON files and running:

Như trước đây, MongoDB tạo ra một sample-airbnb8 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-airbnb8 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-airbnb6, sử dụng tùy chọn sample-analytics5:sample-airbnb6 option, using the sample-analytics5 option:

Nếu bạn quên thêm tùy chọn --JsonArray, CSV3 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.CSV3 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-analytics7 và sample-analytics8 phải là các loại "ngày" chứ không phải "chuỗi".sample-analytics7 and sample-analytics8 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-airbnb8 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-airbnb8, 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-airbnb8, 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-airbnb8 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-airbnb8 đã 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 CSV3.sample-airbnb8 value is important. If your incoming documents don't contain sample-airbnb8 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-airbnb8 values, then they will be checked against existing documents in the collection. The sample-airbnb8 value must be unique within a collection. By default, if the incoming document has an sample-airbnb8 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 CSV3.

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 CSV3 để 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-airbnb8 và cung cấp tùy chọn sample-geospatial7. Chế độ này Willinsert một tài liệu mới nếu giá trị sample-airbnb8 hiện không có trong bộ sưu tập. Nếu giá trị sample-airbnb8 đã 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.CSV3 to efficiently update the data in your collection. If your input data is supplied with a stable identifier, use that field as the sample-airbnb8 field, and supply the option sample-geospatial7. This mode willinsert a new document if the sample-airbnb8 value is not currently present in the collection. If the sample-airbnb8 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-guides0. 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-guides0 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 CSV3 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-airbnb8 và cung cấp tùy chọn sample-guides3. Chế độ này sẽ chèn một tài liệu mới nếu giá trị sample-airbnb8 hiện không có trong bộ sưu tập. Nếu giá trị sample-airbnb8 đã 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 CSV3 with "merge mode". If your input data is supplied with a stable identifier, use that field as the sample-airbnb8 field, and supply the option sample-guides3. This mode will insert a new document if the sample-airbnb8 value is not currently present in the collection. If the sample-airbnb8 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-guides0 ở đâ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-guides0 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-guides7 hoặc sample-guides8 để nói CSV3 Đị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-mflix0 để nói với CSV3 rằng dòng đầu tiên không nên được nhập dưới dạng tài liệu.sample-guides7 or sample-guides8 option to tell CSV3 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-mflix0 option to tell CSV3 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 CSV3 để 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 CSV3 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 CSV3.CSV3.

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 CSV3 Tên của từng cột của bạn, để CSV3 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-mflix6 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-mflix7.CSV3 the name of each of your columns, so that CSV3 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-mflix6 option, or you can put the field names in a file, and point to it with the sample-mflix7 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-mflix6 từ cuộc gọi ở trên trông như thế này:sample-mflix6 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:

Hướng dẫn how do i import a database into mongodb atlas? - làm cách nào để nhập cơ sở dữ liệu vào tập bản đồ mongodb?
Các tài liệu nhập khẩu, được xem trong La bàn MongoDB. Lưu ý rằng các trường ngày đã được nhập dưới dạng chuỗi.

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 CSV3 đã tự động chuyển đổi các loại số nguyên thành sample_guides3 và giữ các giá trị vĩ độ và độ cao là sample-restaurants1 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.CSV3 has automatically converted integer types to sample_guides3 and kept the latitude and longitude values as sample-restaurants1 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 CSV3 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-restaurants3. Cũng như sử dụng tùy chọn sample-restaurants3, 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-mflix6, 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.CSV3 you wish to specify the type of some or all of your fields, you should use the sample-restaurants3 option. As well as using the sample-restaurants3 option, you will need to specify the types of your fields. If you're using the sample-mflix6 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-restaurants6 và nhập sau:sample-restaurants6, and entered the following:

Bởi vì CSV3 đã làm đúng với hầu hết các trường, tôi đã đặt chúng thành sample-restaurants8 - thông tin loại xuất hiện sau một khoảng thời gian (sample-restaurants9). Hai trường thời gian, sample-analytics7 và sample-analytics8 đã đượ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-supplies2. Nhiều loại có đối số bên trong dấu ngoặc đơn. Trong trường hợp loại sample-supplies2, 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.CSV3 already did the right thing with most of the fields, I've set them to sample-restaurants8 - the type information comes after a period (sample-restaurants9). The two time fields, sample-analytics7 and sample-analytics8 were being incorrectly imported as strings, so in these cases I've specified that they should be treated as a sample-supplies2 type. Many of the types take arguments inside the parentheses. In the case of the sample-supplies2 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 CSV3:CSV3:

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 CSV3 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 CSV3, 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à:CSV3 and of how flexible it is! I haven't covered nearly all of the options that can be provided to CSV3, however, just the most important ones. Others I find useful frequently are:

Quyền muaSự mô tả
sample-supplies7Bỏ qua các trường hoặc cột có giá trị trống.
sample-supplies8Thả 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-supplies9Một tùy chọn khác hữu ích trong quá trình phát triển, điều này khiến CSV3 dừng lại ngay khi xảy ra lỗi.CSV3 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: CSV2 Một công cụ thao tác JSON và CSV9 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: CSV2 a JSON manipulation tool, and CSV9 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 CSV03 chứa các mục sau:CSV03 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-analytics7 và sample-analytics8 để chúng được nhập vào MongoDB dưới dạng các loại CSV06:sample-analytics7 and sample-analytics8 fields so that they will be imported into MongoDB as CSV06 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 CSV3 thông qua CSV2.CSV3 via CSV2.

Công cụ CSV2 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à CSV10. Kiểm tra nó để biết thêm ý tưởng và tài liệu đầy đủ trên trang web JQ.CSV2 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 CSV10. Check it out for more ideas, and the full documentation on the JQ website.

CSVKIT

Theo cùng một cách mà CSV2 là một công cụ để lọc và điều khiển dữ liệu JSON, CSV9 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 CSV3. Các công cụ như CSV14 lọc các hàng tệp CSV dựa trên các biểu thức và CSV15 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 CSV3.CSV2 is a tool for filtering and manipulating JSON data, CSV9 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 CSV3. Tools like CSV14 which filters csv file rows based on expressions, and CSV15 which can remove whole columns from CSV input, are useful tools for slicing and dicing your data before providing it to CSV3.

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 CSV3 không? Bạn có một ví dụ tuyệt vời về việc sử dụng CSV18 để 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!CSV3? Do you have a great example of using CSV18 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 CSV3 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.CSV3 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.

Làm cách nào để nhập toàn bộ cơ sở dữ liệu vào MongoDB?

Để nhập dữ liệu vào cơ sở dữ liệu MongoDB, bạn có thể sử dụng Mongoimport để nhập dữ liệu bộ sưu tập cụ thể hoặc bạn có thể sử dụng MongoRestore để nhập bản sao lưu cơ sở dữ liệu đầy đủ nhị phân (BSON). Tệp cơ sở dữ liệu được xuất phải được lưu trữ cục bộ trên cùng một máy với máy khách của bạn.use mongorestore to import a binary (BSON) full database backup. The exported database file must be stored locally on the same machine as your client.

Làm cách nào để kết nối với một cơ sở dữ liệu cụ thể trong Atlas MongoDB?

Nhấp vào Kết nối ...
Chọn Kết nối ứng dụng của bạn ..
Chọn phiên bản trình điều khiển và trình điều khiển của bạn.....
Sao chép chuỗi kết nối được tạo.....
Danh sách trắng Địa chỉ IP của bạn.....
Nhấp vào Thêm địa chỉ IP hiện tại.....
Bạn đang kết nối từ một địa chỉ IP khác, thông qua VPN hoặc nhận lỗi?....
Đặt tên cho kết nối của bạn và nhấp vào nút từ URI ..

Atlas có thể làm việc với các cơ sở dữ liệu khác không?

Một dịch vụ được quản lý cơ sở dữ liệu toàn cầu dựa trên nguồn gốc nguồn mở được thiết kế để xử lý tất cả sự phức tạp của việc triển khai, quản lý và triển khai chữa bệnh, MongoDB Atlas là một đám mây, tương thích với các nhà cung cấp dịch vụ đám mây bao gồm Amazon Web Services (AWS), Microsoft Azure và Google CloudNền tảng.compatible with cloud service providers including Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform.

Làm thế nào nhập dữ liệu từ Excel vào MongoDB?

Tiện ích Mongoimport chỉ hỗ trợ các tệp JSON, CSV và TSV.Do đó, để lấy dữ liệu của bạn từ Excel vào MongoDB, tùy chọn tốt nhất là lưu nó dưới dạng tệp CSV và sau đó sử dụng Mongoimport để nhập nó.save it as a CSV file, and then use mongoimport to import it.