Chúng ta có thể sử dụng hai nhóm theo cùng một truy vấn trong MongoDB không?

Câu lệnh GROUP BY nhóm các hàng có cùng giá trị thành các hàng tóm tắt, chẳng hạn như "tìm số lượng khách hàng ở mỗi quốc gia"

Câu lệnh GROUP BY thường được sử dụng với các hàm tổng hợp (COUNT(), MAX(), MIN(), SUM(), AVG()) để nhóm tập hợp kết quả theo một hoặc nhiều cột

NHÓM THEO Cú pháp

CHỌN tên_cột
TỪ tên_bảng
điều kiện ở đâu
NHÓM THEO (các) tên_cột
ĐẶT HÀNG BẰNG (các) tên_cột;


Cơ sở dữ liệu demo

Dưới đây là một lựa chọn từ bảng "Khách hàng" trong cơ sở dữ liệu mẫu của Northwind

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Đức2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222Mexico D. F. 05021Mexico3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D. F. 05023Mexico4Xung quanh Sừng Thomas Hardy120 Hanover Sq. Luân ĐônWA1 1DPUK5Berglunds snbbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Thụy Điển



NHÓM SQL THEO Ví dụ

Câu lệnh SQL sau đây liệt kê số lượng khách hàng ở mỗi quốc gia

Thí dụ

SELECT COUNT(CustomerID), Quốc gia
Từ khách hàng
NHÓM THEO Quốc gia;

Tự mình thử »

Câu lệnh SQL sau liệt kê số lượng khách hàng ở mỗi quốc gia, được sắp xếp từ cao xuống thấp

Thí dụ

SELECT COUNT(CustomerID), Quốc gia
Từ khách hàng
NHÓM THEO Quốc gia
ĐẶT HÀNG BẰNG SỐ LƯỢNG(CustomerID) DESC;

Tự mình thử »


Cơ sở dữ liệu demo

Dưới đây là một lựa chọn từ bảng "Đơn hàng" trong cơ sở dữ liệu mẫu của Northwind

OrderIDCustomerIDEemployeeIDOrderDateShipperID102489051996-07-043102498161996-07-051102503441996-07-082

Prisma Client cho phép bạn đếm các bản ghi, tổng hợp các trường số và chọn các giá trị trường riêng biệt

tổng hợp

Prisma Client cho phép bạn trên các trường số (chẳng hạn như

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

_count: {

age: true,

},

})

8 và

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

_count: {

age: true,

},

})

9) của một mô hình. Truy vấn sau đây trả về độ tuổi trung bình của tất cả người dùng

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

})

console.log('Average age:' + aggregations._avg.age)

Bạn có thể kết hợp tổng hợp với lọc và đặt hàng. Ví dụ: truy vấn sau đây trả về độ tuổi trung bình của người dùng

  • Sắp xếp theo thứ tự của

    {

    _avg: {

    age: null

    },

    _count: {

    age: 9

    }

    }

    0 tăng dần
  • Trong đó

    {

    _avg: {

    age: null

    },

    _count: {

    age: 9

    }

    }

    1 chứa

    {

    _avg: {

    age: null

    },

    _count: {

    age: 9

    }

    }

    2
  • Giới hạn cho 10 người dùng

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

Giá trị tổng hợp là nullable

Trong 2. 21. 0 trở lên, tập hợp trên các trường nullable có thể trả về một giá trị

{

_avg: {

age: null

},

_count: {

age: 9

}

}

3 hoặc

{

_avg: {

age: null

},

_count: {

age: 9

}

}

4. Điều này không bao gồm

{

_avg: {

age: null

},

_count: {

age: 9

}

}

5, luôn trả về 0 nếu không tìm thấy bản ghi nào

Xem xét truy vấn sau đây, trong đó

{

_avg: {

age: null

},

_count: {

age: 9

}

}

0 là nullable trong lược đồ

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

_count: {

age: true,

},

})

Ẩn kết quả CLI

{

_avg: {

age: null

},

_count: {

age: 9

}

}

Truy vấn trả về

{

_avg: {

age: null

},

_count: {

age: 9

}

}

7 trong một trong các trường hợp sau

  • không có người dùng
  • Giá trị của trường

    {

    _avg: {

    age: null

    },

    _count: {

    age: 9

    }

    }

    0 của mọi người dùng là

    {

    _avg: {

    age: null

    },

    _count: {

    age: 9

    }

    }

    4

Điều này cho phép bạn phân biệt giữa giá trị tổng hợp thực (có thể bằng 0) và không có dữ liệu

Nhóm theo

Prisma Client's cho phép bạn nhóm các bản ghi theo một hoặc nhiều giá trị trường - chẳng hạn như

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

1 hoặc

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

1 và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

3 và thực hiện tổng hợp trên từng nhóm, chẳng hạn như tìm độ tuổi trung bình của những người sống trong một thành phố cụ thể.

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 là GA trong 2. 20. 0 trở lên

Video sau đây sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 để tóm tắt tổng số ca nhiễm COVID-19 theo lục địa

Ví dụ sau nhóm tất cả người dùng theo trường

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

1 và trả về tổng số lượt xem hồ sơ cho mỗi quốc gia

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

Hiển thị kết quả CLI

lọc theo nhóm

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 hỗ trợ hai cấp độ lọc.

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

8 và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

9

Lọc bản ghi với

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

8

Sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

8 để lọc tất cả các bản ghi trước khi nhóm. Ví dụ sau nhóm người dùng theo quốc gia và tính tổng lượt xem hồ sơ, nhưng chỉ bao gồm những người dùng có địa chỉ email chứa

{

_avg: {

age: null

},

_count: {

age: 9

}

}

2

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

})

Lọc các nhóm có

Sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

9 để lọc toàn bộ nhóm theo giá trị tổng hợp, chẳng hạn như tổng hoặc giá trị trung bình của một trường, không phải bản ghi riêng lẻ - ví dụ: chỉ trả về các nhóm có giá trị trung bình

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

})

4 lớn hơn 100

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

Trường hợp sử dụng để có

Trường hợp sử dụng chính cho

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

9 là lọc các tập hợp. Chúng tôi khuyên bạn nên sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

8 để giảm kích thước tập dữ liệu của mình càng nhiều càng tốt trước khi nhóm, vì làm như vậy ✔ giảm số lượng bản ghi mà cơ sở dữ liệu phải trả về và ✔ sử dụng các chỉ số

Ví dụ: truy vấn sau nhóm tất cả người dùng không đến từ Thụy Điển hoặc Ghana

const fd = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

notIn: ['Sweden', 'Ghana'],

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_min: {

gte: 10,

},

},

},

})

Truy vấn sau đây về mặt kỹ thuật đạt được kết quả tương tự, nhưng loại trừ người dùng từ Ghana sau khi nhóm. Điều này không mang lại bất kỳ lợi ích nào và không được khuyến nghị thực hành

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

Ghi chú. Trong phạm vi

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

9, bạn chỉ có thể lọc các giá trị hoặc trường tổng hợp có sẵn trong

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

})

8

đặt hàng theo nhóm

Các ràng buộc sau áp dụng khi bạn kết hợp

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

0

  • Bạn có thể

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    _sum: {

    profileViews: true,

    },

    having: {

    profileViews: {

    _avg: {

    gt: 100,

    },

    },

    },

    })

    0 trường có trong

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    _sum: {

    profileViews: true,

    },

    })

    8
  • Bạn có thể tổng hợp

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    _sum: {

    profileViews: true,

    },

    having: {

    profileViews: {

    _avg: {

    gt: 100,

    },

    },

    },

    })

    0 (Xem trước trong 2. 21. 0 trở lên)
  • Nếu bạn sử dụng

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    _sum: {

    profileViews: true,

    },

    having: {

    profileViews: {

    _avg: {

    gt: 100,

    },

    },

    },

    })

    4 và/hoặc

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    _sum: {

    profileViews: true,

    },

    having: {

    profileViews: {

    _avg: {

    gt: 100,

    },

    },

    },

    })

    5 với

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    _sum: {

    profileViews: true,

    },

    })

    0, bạn cũng phải bao gồm

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    _sum: {

    profileViews: true,

    },

    having: {

    profileViews: {

    _avg: {

    gt: 100,

    },

    },

    },

    })

    0 trong truy vấn

Thứ tự theo nhóm tổng hợp

Bạn có thể đặt hàng theo nhóm tổng hợp. Prisma đã thêm hỗ trợ để sử dụng `orderBy với các nhóm tổng hợp trong cơ sở dữ liệu quan hệ trong phiên bản 2. 21. 0 và hỗ trợ MongoDB trong 3. 4. 0

Ví dụ sau đây sắp xếp từng nhóm

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

3 theo số lượng người dùng trong nhóm đó (nhóm lớn nhất trước)

const groupBy = await prisma.user.groupBy({

by: ['city'],

_count: {

city: true,

},

orderBy: {

_count: {

city: 'desc',

},

},

})

Hiển thị kết quả CLI

Thứ tự theo lĩnh vực

Truy vấn sau sắp xếp các nhóm theo quốc gia, bỏ qua hai nhóm đầu tiên và trả về nhóm thứ 3 và thứ 4

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

0

nhómByCâu hỏi thường gặp

Tôi có thể sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

9 với

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 không?

Bạn không thể sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

9 với

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0. Tuy nhiên, tất cả các trường có trong

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

})

8 sẽ tự động được trả về

Sự khác biệt giữa việc sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

8 và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

9 với

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 là gì?

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

8 lọc tất cả các bản ghi trước khi nhóm và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

9 lọc toàn bộ nhóm và hỗ trợ lọc trên một giá trị trường tổng hợp, chẳng hạn như trung bình hoặc tổng của một trường cụ thể trong nhóm đó

Sự khác biệt giữa

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

0 là gì?

Cả hai bản ghi nhóm

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

0 và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 theo một hoặc nhiều giá trị trường duy nhất.

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

0 cho phép bạn tổng hợp dữ liệu trong mỗi nhóm - ví dụ: trả về số lượt xem trung bình trên các bài đăng từ Đan Mạch - trong khi khác biệt thì không

Đếm

Sử dụng để đếm số lượng bản ghi hoặc giá trị trường không phải ____3_______4. Ví dụ truy vấn sau đây đếm tất cả người dùng

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

1

Quan hệ đếm

Khả năng đếm quan hệ có sẵn trong phiên bản 3. 0. 1 trở lên

Đối với các phiên bản trước 3. 0. 1
Bạn cần thêm

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

6 rồi chạy

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

7

Để trả về số lượng quan hệ (ví dụ: số lượng bài đăng của người dùng), hãy sử dụng tham số

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

8 với

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

9 lồng nhau như được hiển thị

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

2

Hiển thị kết quả CLI

Tham số

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

8

  • Có thể được sử dụng bên trong một

    const groupBy = await prisma.user.groupBy({

    by: ['city'],

    _count: {

    city: true,

    },

    orderBy: {

    _count: {

    city: 'desc',

    },

    },

    })

    1 cấp cao nhất hoặc

    const groupUsers = await prisma.user.groupBy({

    by: ['country'],

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    _sum: {

    profileViews: true,

    },

    having: {

    profileViews: {

    _avg: {

    gt: 100,

    },

    },

    },

    })

    9
  • Có thể được sử dụng với bất kỳ truy vấn nào trả về bản ghi (bao gồm

    const groupBy = await prisma.user.groupBy({

    by: ['city'],

    _count: {

    city: true,

    },

    orderBy: {

    _count: {

    city: 'desc',

    },

    },

    })

    3,

    const groupBy = await prisma.user.groupBy({

    by: ['city'],

    _count: {

    city: true,

    },

    orderBy: {

    _count: {

    city: 'desc',

    },

    },

    })

    4 và

    const groupBy = await prisma.user.groupBy({

    by: ['city'],

    _count: {

    city: true,

    },

    orderBy: {

    _count: {

    city: 'desc',

    },

    },

    })

    5)
  • có thể trở lại
  • Từ phiên bản 4. 3. 0, có thể

Trả về số lượng quan hệ với

const groupBy = await prisma.user.groupBy({

by: ['city'],

_count: {

city: true,

},

orderBy: {

_count: {

city: 'desc',

},

},

})

1

Truy vấn sau bao gồm số lượng bài đăng của mỗi người dùng trong kết quả

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

2

Hiển thị kết quả CLI

Trả về số lượng quan hệ với

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

9

Truy vấn sau đây sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

9 để trả về số lượng bài đăng của mỗi người dùng và không có trường nào khác

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

4

Hiển thị kết quả CLI

Trả về nhiều số lượng quan hệ

Truy vấn sau đây trả về số lượng

const groupBy = await prisma.user.groupBy({

by: ['city'],

_count: {

city: true,

},

orderBy: {

_count: {

city: 'desc',

},

},

})

9 và

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

00 của mỗi người dùng và không có trường nào khác

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

5

Hiển thị kết quả CLI

Lọc số lượng quan hệ

Tính năng này có sẵn từ phiên bản 4. 3. 0. Để sử dụng nó, bạn cần thêm

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

01

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

6

Sử dụng

const groupUsers = await prisma.user.groupBy({

by: ['country'],

_sum: {

profileViews: true,

},

})

8 để lọc các trường được trả về bởi loại đầu ra

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

8. Bạn có thể làm điều này trên và các trường của một

Ví dụ: truy vấn sau trả về tất cả các bài đăng của người dùng có tiêu đề "Xin chào. "

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

7

Truy vấn sau tìm tất cả các bài đăng của người dùng có nhận xét từ tác giả có tên "Alice"

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

8

Đếm các giá trị trường không phải ______3_______4

Trong 2. 15. 0 trở lên, bạn có thể đếm tất cả các bản ghi cũng như tất cả các trường hợp có giá trị trường không phải ______3_______4. Truy vấn sau đây trả về số lượng

  • Tất cả bản ghi

    const aggregations = await prisma.user.aggregate({

    _avg: {

    age: true,

    },

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    orderBy: {

    age: 'asc',

    },

    take: 10,

    })

    console.log('Average age:' + aggregations._avg.age)

    06 (

    const aggregations = await prisma.user.aggregate({

    _avg: {

    age: true,

    },

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    orderBy: {

    age: 'asc',

    },

    take: 10,

    })

    console.log('Average age:' + aggregations._avg.age)

    07)
  • Tất cả các giá trị không phải ______3_______4

    const aggregations = await prisma.user.aggregate({

    _avg: {

    age: true,

    },

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    orderBy: {

    age: 'asc',

    },

    take: 10,

    })

    console.log('Average age:' + aggregations._avg.age)

    09 (không phải các giá trị khác biệt, chỉ các giá trị không phải là ______3_______4)

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

9

Hiển thị kết quả CLI

số lượng đã lọc

{

_avg: {

age: null

},

_count: {

age: 9

}

}

5 hỗ trợ lọc. Truy vấn mẫu sau đây đếm tất cả người dùng có hơn 100 lượt xem hồ sơ

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

_count: {

age: true,

},

})

0

Truy vấn ví dụ sau đếm bài đăng của một người dùng cụ thể

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

_count: {

age: true,

},

})

1

Chọn khác biệt

Prisma Client cho phép bạn lọc các hàng trùng lặp từ phản hồi Truy vấn Prisma thành truy vấn bằng cách sử dụng.

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

0 thường được sử dụng kết hợp với để xác định các kết hợp giá trị duy nhất nhất định trong các hàng trong bảng của bạn

Ví dụ sau đây trả về tất cả các trường cho tất cả các bản ghi

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

06 với các giá trị trường

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

09 riêng biệt

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

_count: {

age: true,

},

})

2

Ví dụ sau đây trả về các giá trị trường

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

18 riêng biệt (ví dụ:

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

19 và

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

20)

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

_count: {

age: true,

},

})

3

Hiển thị kết quả CLI

khác biệt dưới mui xe

Tùy chọn

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

0 của Prisma không sử dụng SQL

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

22. Thay vào đó,

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

0 sử dụng

  • Một truy vấn

    const aggregations = await prisma.user.aggregate({

    _avg: {

    age: true,

    },

    where: {

    email: {

    contains: 'prisma.io',

    },

    },

    orderBy: {

    age: 'asc',

    },

    take: 10,

    })

    console.log('Average age:' + aggregations._avg.age)

    24
  • Xử lý hậu kỳ trong bộ nhớ để chọn riêng biệt

Nó được thiết kế theo cách này để hỗ trợ

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

9 và

const groupBy = await prisma.user.groupBy({

by: ['city'],

_count: {

city: true,

},

orderBy: {

_count: {

city: 'desc',

},

},

})

1 như một phần của truy vấn

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

country: {

not: 'Sweden',

},

},

_sum: {

profileViews: true,

},

having: {

country: {

not: 'Ghana',

},

profileViews: {

_min: {

gte: 10,

},

},

},

})

0

Ví dụ sau đây chọn khác biệt trên

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

28 và

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

29, được sắp xếp theo thứ tự của

const aggregations = await prisma.user.aggregate({

_avg: {

age: true,

},

where: {

email: {

contains: 'prisma.io',

},

},

orderBy: {

age: 'asc',

},

take: 10,

})

console.log('Average age:' + aggregations._avg.age)

30, để trả về điểm số cao nhất của mỗi người chơi trong mỗi trò chơi. Truy vấn sử dụng

const groupBy = await prisma.user.groupBy({

by: ['city'],

_count: {

city: true,

},

orderBy: {

_count: {

city: 'desc',

},

},

})

1 và

const groupUsers = await prisma.user.groupBy({

by: ['country'],

where: {

email: {

contains: 'prisma.io',

},

},

_sum: {

profileViews: true,

},

having: {

profileViews: {

_avg: {

gt: 100,

},

},

},

})

9 để bao gồm dữ liệu bổ sung

Làm cách nào để sử dụng nhóm cho nhiều trường trong MongoDB?

Ví dụ 3. Nhóm BUCKET MongoDb theo nhiều trường . Bucket tổng hợp là quá trình phân loại các tài liệu thành các nhóm. Nhóm này hoạt động như những cái xô. Mỗi văn bản được phân chia tùy theo cách diễn đạt cụ thể. creating the bucket aggregation. Bucket aggregation is the process of categorizing the documents into groups. This group acts like buckets. Each document is divided depending on the specific expression.

Nhóm hoạt động như thế nào trong MongoDB?

MongoDB group by được dùng để nhóm dữ liệu từ bộ sưu tập , chúng ta có thể đạt được nhóm theo mệnh đề bằng hàm tổng hợp và phương thức nhóm trong MongoDB. Mặc dù sử dụng hàm tổng hợp với các hoạt động truy vấn nhóm theo mệnh đề nhanh hơn như truy vấn thông thường, nhưng về cơ bản, hàm tổng hợp được sử dụng trong nhiều điều kiện.

Nhóm có sử dụng chỉ mục MongoDB không?

$group không sử dụng dữ liệu chỉ mục . Từ tài liệu mongoDB. Các nhà khai thác đường ống $match và $sort có thể tận dụng lợi thế của một chỉ mục khi chúng xuất hiện ở đầu đường ống. Toán tử đường ống $geoNear tận dụng chỉ mục không gian địa lý.

Phương thức tổng hợp nào được MongoDB ưa thích sử dụng?

Đường dẫn cung cấp khả năng tổng hợp dữ liệu hiệu quả bằng cách sử dụng các thao tác gốc trong MongoDB và là phương pháp ưa thích để tổng hợp dữ liệu trong MongoDB. Đường dẫn tổng hợp có thể hoạt động trên một bộ sưu tập được phân đoạn.