Trường đường dẫn mongodb
Địa chỉ email ẩn danh cho nhóm này hoặc bạn cần có quyền xem địa chỉ email thành viên để xem thư gốc Show
để mongod. @nhóm Google. com Theo như tôi biết, đây là cách duy nhất bạn có thể làm điều đó. Nhưng vì _id không bắt buộc phải là ObjectId. Bạn có thể lưu chuỗi hoặc bất cứ thứ gì có thể là duy nhất { _Tôi. 'John', giá trị. 'vlu' } db. kiểm tra. cập nhật ({'_id'. 'John'}, {'$set'. {'bleh'. 'bleyy'}}) Hoặc nếu bạn quan tâm đến ObjectId, bạn có thể đặt một trường khác có chỉ mục duy nhất sẽ đóng vai trò là id "con người". Cái nào có thể thân thiện hơn để làm việc với db. kiểm tra. cập nhật ({'tên người dùng'. 'John'}, {'$set'. {'bleh'. 'bleyy'}}) Trong đó tên người dùng là một id duy nhất. Theo tôi, làm việc với _id không phải lúc nào cũng tốt vì nó có thể ẩn ý nghĩa của id nếu bạn có thể đặt một Giai đoạn db.vehicleinformation.find({make : "Toyota"}).pretty()6 trong quy trình MongoDB thêm một trường mới vào bản ghi. Ngoài trường mới, giai đoạn này cũng sử dụng biểu thức tổng hợp thực hiện một số loại logic như số học hoặc so sánh Kiểm tra ví dụ dưới đây trong đó giai đoạn ____26 được sử dụng làm giai đoạn thứ ba để tạo một trường mới có tên là db.vehicleinformation.find({make : "Toyota"}).pretty()8
(Bài viết này là một phần của Hướng dẫn MongoDB của chúng tôi. Sử dụng menu bên phải để điều hướng. ) Cách hoạt động của phép chiếu MongoDBPhép chiếu MongoDB là một công cụ mạnh mẽ có thể được sử dụng để chỉ trích xuất các trường bạn cần từ tài liệu—không phải tất cả các trường. Nó cho phép bạn
Vì phép chiếu MongoDB được xây dựng dựa trên phương thức find() hiện có, nên bạn có thể sử dụng bất kỳ truy vấn phép chiếu nào mà không cần sửa đổi đáng kể các hàm hiện có. Ngoài ra, phép chiếu là yếu tố chính khi tìm dữ liệu dành riêng cho người dùng từ một tập dữ liệu nhất định Cú pháp cơ bản của phép chiếu MongoDBdb.collection_name.find({},{ Phép chiếu MongoDB sử dụng cú pháp tìm tương tự, nhưng chúng tôi cũng thêm một bộ tham số vào hàm tìm. Bộ tham số này thông báo cho phiên bản MongoDB về trường nào sẽ được trả về Xem xét bộ sưu tập sau đây có tên là “thông tin phương tiện” Chúng tôi sẽ cố gắng truy xuất năm kiểu dáng của chiếc xe do Toyota sản xuất (sản xuất. 'Toyota') Câu lệnh find() bình thường db.vehicleinformation.find({make : "Toyota"}).pretty() Kết quả Trong tuyên bố này, chúng tôi nhận được tất cả dữ liệu trong tài liệu nơi sản xuất là Toyota. Để chỉ lấy năm, chúng ta có thể sử dụng phép chiếu, như hình bên dưới Tuyên bố chiếu MongoDB db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty() Kết quả Trong câu lệnh chiếu, chúng tôi sử dụng trường năm có giá trị Boolean 1 (True) để cho biết rằng chúng tôi chỉ yêu cầu trường “năm”. Hạn chế là MongoDB sẽ trả về ID đối tượng (_id) của mỗi tài liệu trừ khi chúng tôi chỉ định rõ ràng rằng chúng tôi không yêu cầu ID đối tượng Câu lệnh chiếu MongoDB với “_id” bị loại trừ db.vehicleinformation.find({make : "Toyota"}, {year : 1, _id : 0}).pretty() Kết quả Trong câu lệnh này, chúng tôi chuyển 0 làm toán tử Boolean để cho biết rằng chúng tôi không yêu cầu trường ID đối tượng Toán tử trong MongoDB ProjectionSử dụng phương pháp chiếu MongoDB để truy xuất dữ liệu cụ thể từ tài liệu sẽ tác động tích cực đến hiệu suất cơ sở dữ liệu vì nó làm giảm khối lượng công việc của truy vấn tìm kiếm, giảm thiểu việc sử dụng tài nguyên Để giảm khối lượng công việc, MongoDB cung cấp các toán tử bên dưới có thể được sử dụng trong truy vấn phép chiếu
$ Toán tửToán tử $ được sử dụng để giới hạn nội dung của một mảng để chiếu phần tử đầu tiên khớp với điều kiện truy vấn trên trường mảng. Bắt đầu từ MongoDB 4. 4, nếu không có điều kiện truy vấn, phần tử đầu tiên sẽ được trả về trong mảng đã chỉ định cú pháp db.collection.find( { Hạn chế của toán tử $
Chúng tôi sẽ sử dụng Bộ sưu tập “studentgrades” để chứng minh toán tử $ db.studentgrades.find({},{_id:0}).pretty() Kết quả Sử dụng bộ sưu tập “điểm của học sinh”, chúng tôi tìm kiếm xem một học sinh đã nhận được điểm bằng hoặc lớn hơn 80 Hãy xem điều gì sẽ xảy ra khi chúng ta không sử dụng toán tử $. Đoạn mã dưới đây sẽ dẫn đến truy vấn trả về tất cả các giá trị trong mảng dưới dạng đầu ra nếu bất kỳ mục nào bằng hoặc lớn hơn 80 db.studentgrades.find( {grades: { $gte: 80}}, {"grades": 1}) Kết quả Sử dụng toán tử $ sẽ chỉ trả về mục đầu tiên có giá trị bằng hoặc lớn hơn 80 ________số 8Kết quả Toán tử $elemMatchToán tử $elemMatch sẽ giới hạn nội dung của một mảng đối với phần tử đầu tiên khớp với một điều kiện nhất định. Điều kiện này khác với toán tử $ vì toán tử chiếu $elemMatch yêu cầu một đối số điều kiện rõ ràng Hãy xem cú pháp sử dụng $elemMatch trong phương thức find() cú pháp db.collection.find( { Hạn chế của toán tử $elemMatch
Chúng tôi sẽ sử dụng bộ sưu tập “schooldata” sau đây để chứng minh toán tử $elemMatch db.collection_name.find({},{0 Kết quả Bây giờ chúng tôi sẽ chạy cái này trên một trường duy nhất. Với toán tử $elemMatch, chúng tôi sẽ tìm kiếm các trường học ở London có học sinh mười tuổi. Phương thức pretty() được sử dụng để định dạng đầu ra db.vehicleinformation.find({make : "Toyota"}).pretty()0 Kết quả Trong ví dụ dưới đây, chúng tôi sẽ kiểm tra nhiều trường. Ở đây, chúng tôi kiểm tra cả tuổi và tên của học sinh. Chúng tôi kiểm tra xem một học sinh tên là “barry” mười tuổi có đang học trường nào ở London không db.vehicleinformation.find({make : "Toyota"}).pretty()1 Kết quả Toán tử chiếu $sliceToán tử $slice chỉ định số phần tử sẽ được trả về làm đầu ra của truy vấn cú pháp db.vehicleinformation.find({make : "Toyota"}).pretty()2 Hạn chế trong toán tử $slice
Bây giờ chúng ta sẽ sử dụng bộ sưu tập “schooldata” để minh họa toán tử $slice db.collection_name.find({},{0 Kết quả Hãy cắt phần tử đầu tiên trong một mảng. Để đạt được kết quả này, chúng tôi sử dụng toán tử $slice để chỉ cắt phần tử đầu tiên từ mảng của sinh viên db.vehicleinformation.find({make : "Toyota"}).pretty()4 Kết quả Bây giờ, chúng ta sẽ cắt phần tử cuối cùng trong mảng. Sử dụng toán tử $slice với “-1” để chỉ ra bản ghi cuối cùng db.vehicleinformation.find({make : "Toyota"}).pretty()5 Kết quả Để bỏ qua các phần tử, chúng ta phải xác định các phần tử được bỏ qua và số phần tử được trả về. Các ví dụ sau minh họa kịch bản này Bỏ qua phần tử đầu tiên và trả về hai phần tử tiếp theo db.vehicleinformation.find({make : "Toyota"}).pretty()6 Kết quả Trong câu lệnh này, chúng ta cắt mảng “sinh viên” bằng cách bỏ qua phần tử đầu tiên và trả về hai phần tử còn lại. Chúng được xác định bên trong dấu ngoặc vuông []. Giá trị đầu tiên là phần tử bị bỏ qua, trong khi giá trị thứ hai là số lượng phần tử còn lại được trả về. Nếu mảng có ít hơn 2 phần tử sau khi bỏ qua phần tử đầu tiên sẽ trả về tất cả các phần tử còn lại Toán tử $metaToán tử $meta được sử dụng để lấy siêu dữ liệu được liên kết với tài liệu. Toán tử $meta có thể được sử dụng với cả phép chiếu MongoDB Aggregation và MongoDB. Phần này sẽ chỉ trình bày những kiến thức cơ bản về phép chiếu MongoDB và cách toán tử $meta sẽ được sử dụng trong phép chiếu Toán tử $meta sử dụng cú pháp sau db.vehicleinformation.find({make : "Toyota"}).pretty()7 Đối với “metaDataKeyword”, bạn có thể liên kết các giá trị này
Cách sử dụng và hạn chế của toán tử $meta trong phép chiếu
Bây giờ, hãy xem một vài ví dụ Đối với {$meta. “textScore”}, chúng tôi sẽ sử dụng bộ sưu tập thực phẩm db.vehicleinformation.find({make : "Toyota"}).pretty()8 Kết quả Hãy tạo một chỉ mục cho bộ sưu tập “thực phẩm”. Chúng tôi sẽ sử dụng trường “food_desc” để tạo chỉ mục văn bản db.vehicleinformation.find({make : "Toyota"}).pretty()9 Kết quả Bây giờ chúng ta hãy tìm điểm văn bản. Chúng tôi sử dụng từ “pizza” làm cụm từ tìm kiếm và sử dụng toán tử $meta để lấy điểm văn bản cho từng tài liệu. (_id. 0) được sử dụng để bỏ qua id đối tượng của từng tài liệu để có đầu ra đơn giản hơn db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()0 Kết quả Bây giờ vào {$meta. “khóa chỉ mục”}. Vì “indexKey” hoàn toàn chỉ dành cho mục đích gỡ lỗi, nên tài liệu chính thức của MongoDB nêu rõ như sau db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()1 Các ví dụ sau đây được tạo bằng cách sử dụng bộ sưu tập "vehiclesales". Sử dụng {_id. 0}, id đối tượng bị bỏ qua khỏi đầu ra db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()2 Kết quả Ở đây, chúng tôi tạo một chỉ mục phức hợp bằng cách sử dụng các trường “make” và “type” db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()3 Kết quả Tiếp theo, hãy thực hiện Phép chiếu với chỉ mục. Chúng tôi tìm kiếm các tài liệu trong bộ sưu tập "bán xe" có loại tương đương với "Thể thao" và sử dụng toán tử $meta để lấy khóa chỉ mục cho từng tài liệu db.vehicleinformation.find({make : "Toyota"}, {year : 1}).pretty()4 Kết quả Còn các phép chiếu không có chỉ mục thì sao? . Trong trường hợp này, chỉ mục sẽ không được trả về vì trường giá không phải là một phần của chỉ mục $root trong MongoDB là gì?Tài nguyên gốc là điểm bắt đầu cho API Trình quản lý đám mây . Từ đây, bạn có thể duyệt qua các liên kết để truy cập tất cả các tài nguyên API khác.
Làm cách nào để lấy giá trị trường trong MongoDB?Trả về giá trị của trường được chỉ định từ tài liệu. Nếu bạn không chỉ định một đối tượng, $getField trả về giá trị của trường từ $$CURRENT. Bạn có thể sử dụng $getField để truy xuất giá trị của các trường có tên chứa dấu chấm (. ) hoặc bắt đầu bằng ký hiệu đô la ($ ).
Làm cách nào để thêm một trường trong MongoDB?Để thêm trường hoặc các trường vào tài liệu được nhúng (bao gồm cả tài liệu trong mảng) hãy sử dụng ký hiệu dấu chấm . Xem ví dụ. Để thêm phần tử vào trường mảng hiện có với $addFields , hãy sử dụng với $concatArrays.
Làm cách nào để sử dụng $set trong MongoDB?Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ định . Biểu thức toán tử $set có dạng như sau. { $set. { |