$$ trong mongodb là gì?

Hoạt động tổng hợp xử lý bản ghi dữ liệu và trả về kết quả được tính toán. Hoạt động tổng hợp nhóm các giá trị từ nhiều tài liệu lại với nhau và có thể thực hiện nhiều thao tác khác nhau trên dữ liệu được nhóm để trả về một kết quả duy nhất. Trong SQL đếm (*) và với nhóm theo tương đương với tập hợp MongoDB

Phương thức tổng hợp ()

Để tổng hợp trong MongoDB, bạn nên sử dụng phương thức tổng hợp ()

cú pháp

Cú pháp cơ bản của phương thức tổng hợp () như sau -

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

Thí dụ

Trong bộ sưu tập, bạn có dữ liệu sau -

{
   _id: ObjectId(7df78ad8902c)
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by_user: 'tutorials point',
   url: 'http://www.tutorialspoint.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: ObjectId(7df78ad8902d)
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'tutorials point',
   url: 'http://www.tutorialspoint.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   _id: ObjectId(7df78ad8902e)
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
},

Bây giờ từ bộ sưu tập trên, nếu bạn muốn hiển thị một danh sách cho biết có bao nhiêu hướng dẫn được viết bởi mỗi người dùng, thì bạn sẽ sử dụng phương thức tổng hợp () sau đây -

> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{ "_id" : "tutorials point", "num_tutorial" : 2 }
{ "_id" : "Neo4j", "num_tutorial" : 1 }
>

Truy vấn tương đương Sql cho trường hợp sử dụng trên sẽ được chọn by_user, đếm(*) từ nhóm mycol bởi by_user

Trong ví dụ trên, chúng tôi đã nhóm các tài liệu theo trường by_user và trên mỗi lần xuất hiện của người dùng, giá trị tổng trước đó được tăng lên. Sau đây là danh sách các biểu thức tổng hợp có sẵn

ExpressionDescriptionExample$sumTổng hợp giá trị đã xác định từ tất cả các tài liệu trong bộ sưu tập. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", num_tutorial. {$sum. "$like"}}}])$avgTính giá trị trung bình của tất cả các giá trị đã cho từ tất cả các tài liệu trong bộ sưu tập. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", num_tutorial. {$trung bình. "$like"}}}])$minNhận giá trị tối thiểu tương ứng từ tất cả các tài liệu trong bộ sưu tập. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", num_tutorial. {$ phút. "$like"}}}])$maxLấy giá trị tối đa tương ứng từ tất cả các tài liệu trong bộ sưu tập. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", num_tutorial. {$tối đa. "$like"}}}])$pushChèn giá trị vào một mảng trong tài liệu kết quả. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", url. {$push. "$url"}}}])$addToSet Chèn giá trị vào một mảng trong tài liệu kết quả nhưng không tạo ra các giá trị trùng lặp. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", url. {$addToSet. "$url"}}}])$firstLấy tài liệu đầu tiên từ tài liệu nguồn theo nhóm. Thông thường, điều này chỉ có ý nghĩa cùng với một số giai đoạn “$sort” được áp dụng trước đó. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", first_url. {$đầu tiên. "$url"}}}])$lastLấy tài liệu cuối cùng từ tài liệu nguồn theo nhóm. Thông thường, điều này chỉ có ý nghĩa cùng với một số giai đoạn “$sort” được áp dụng trước đó. db. nấm mốc. tổng hợp([{$group. {_Tôi. "$by_user", last_url. {$last. "$url"}}}])

Khái niệm đường ống

Trong lệnh UNIX, đường dẫn shell có nghĩa là khả năng thực hiện một thao tác trên một số đầu vào và sử dụng đầu ra làm đầu vào cho lệnh tiếp theo, v.v. MongoDB cũng hỗ trợ khái niệm tương tự trong khung tổng hợp. Có một tập hợp các giai đoạn có thể và mỗi giai đoạn đó được coi là một tập hợp tài liệu làm đầu vào và tạo ra một tập hợp tài liệu kết quả (hoặc tài liệu JSON kết quả cuối cùng ở cuối đường ống). Điều này sau đó có thể được sử dụng cho giai đoạn tiếp theo, v.v.

Sau đây là các giai đoạn có thể có trong khung tổng hợp -

  • $project - Được sử dụng để chọn một số trường cụ thể từ một bộ sưu tập

  • $match − Đây là thao tác lọc và do đó, điều này có thể làm giảm số lượng tài liệu được cung cấp làm đầu vào cho giai đoạn tiếp theo

  • $group - Điều này thực hiện tổng hợp thực tế như đã thảo luận ở trên

  • $sort - Sắp xếp tài liệu

  • $skip - Với điều này, có thể bỏ qua trong danh sách tài liệu cho một số lượng tài liệu nhất định

  • $limit - Điều này giới hạn số lượng tài liệu để xem, theo số đã cho bắt đầu từ các vị trí hiện tại

  • $unwind - Cái này được sử dụng để thư giãn tài liệu đang sử dụng mảng. Khi sử dụng một mảng, dữ liệu là loại được nối trước và thao tác này sẽ được hoàn tác với thao tác này để có lại các tài liệu riêng lẻ. Như vậy với giai đoạn này chúng ta sẽ tăng lượng tài liệu cho giai đoạn tiếp theo

    $$ có nghĩa là gì trong MongoDB?

    $ $$CURRENT .

    Gốc $$ là gì?

    $$ROOT. Biến $$ROOT chứa tài liệu nguồn cho nhóm . Nếu bạn muốn chuyển chúng qua trạng thái không sửa đổi, bạn có thể thực hiện việc này bằng cách $đẩy $$ROOT vào đầu ra từ nhóm.

    $[] trong MongoDB là gì?

    Định nghĩa. $[] Toán tử tất cả vị trí $[] chỉ ra rằng toán tử cập nhật nên sửa đổi tất cả các phần tử trong trường mảng đã chỉ định . Toán tử $[] có dạng sau. {

    $EXPR trong MongoDB là gì?

    $expr có thể xây dựng các biểu thức truy vấn so sánh các trường từ cùng một tài liệu trong giai đoạn $match . Nếu giai đoạn $match là một phần của giai đoạn $lookup, thì $expr có thể so sánh các trường bằng biến let. Xem Thực hiện nhiều phép nối và Truy vấn con tương quan với $lookup để biết ví dụ.