Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn tổng hợp MongoDB so với MySQL SELECT field1 FROM bảng

Nhân viên là những thực thể đơn lẻ; do đó, bạn có thể không muốn lập mô hình age của một thành viên trong nhóm rất sâu sắc trong cấu trúc phong phú của các phòng ban và địa điểm và đội. Hoàn toàn tốt nếu có employees riêng thu thập và chỉ cần thực hiện:

db.businesses.aggregate([
{$match: {"age": {$gt: 50} }}
,{$sort: {"age": -1} }
]);

Tìm hiểu sâu về businesses bộ sưu tập bạn có thể có:

{ teams: [ {name: "T1", employees: [ "E1", "E34" ]} ] }

Hoặc, hãy thử cách này:

db.businesses.aggregate([ your pipeline] ,{allowDiskUse:true});

OP có thiết lập 10 biz -> 10 loc -> 10 depts -> 10 team -> 100 emps. 3 lần mở đầu tiên tạo ra sự bùng nổ dữ liệu gấp 10000 lần nhưng lần cuối cùng vượt quá 100 lần. Chúng tôi có thể thu nhỏ lần truy cập bằng cách sử dụng $filter :

db.businesses.aggregate([
{ $unwind: "$locations" },
{ $unwind: "$locations.departments" },
{ $unwind: "$locations.departments.teams" },

{$project: {
        XX: {$filter: {
                    input: "$locations.departments.teams.employees",
                    as: "z",
                    cond: {$gte: [ "$$z.age", 50] }
            }}
    }}
,{$unwind: "$XX"}
,{$sort: {"XX.age":-1}}])


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để gỡ lỗi các truy vấn MySQL / Doctrine2?

  2. Loại cột nào nên được sử dụng để lưu trữ dữ liệu được tuần tự hóa trong db mysql?

  3. mysql:tại sao so sánh 'chuỗi' với 0 lại cho kết quả đúng?

  4. Sao lưu một bảng có cột HÌNH HỌC bằng mysqldump?

  5. MySQL LEFT JOIN kết quả trùng lặp