Mongodb tập hợp tìm trong mảng

Để biết chi tiết về toán tử cụ thể, bao gồm cú pháp và ví dụ, hãy nhấp vào toán tử cụ thể để chuyển đến trang tham chiếu của toán tử đó

Show
NameDescrip Trả về phần tử tại chỉ số mảng đã chỉ định. Nối các mảng để trả về mảng được nối. Chọn một tập hợp con của mảng để trả về một mảng chỉ có các phần tử khớp với điều kiện lọc. Tìm kiếm một mảng cho lần xuất hiện của một giá trị đã chỉ định và trả về chỉ mục mảng của lần xuất hiện đầu tiên. Nếu không tìm thấy chuỗi con, trả về -1Xác định nếu toán hạng là một mảng. Trả về một boolean. Xuất ra một mảng chứa một chuỗi các số nguyên theo đầu vào do người dùng xác định. Trả về một mảng với các phần tử theo thứ tự đảo ngược. Áp dụng một biểu thức cho từng phần tử trong một mảng và kết hợp chúng thành một giá trị duy nhất. Trả về số phần tử trong mảng. Chấp nhận một biểu thức duy nhất làm đối số. Trả về một tập hợp con của một mảng. Hợp nhất hai danh sách lại với nhau. Trả về một giá trị boolean cho biết liệu một giá trị đã chỉ định có trong một mảng hay không

  • $arrayElemAt (tổng hợp)
  • $concatArrays (tổng hợp)
  • $filter (tổng hợp)
  • $indexOfArray (tổng hợp)
  • $isArray (tổng hợp)
  • phạm vi $ (tổng hợp)
  • $reverseArray (tổng hợp)
  • $reduce (tổng hợp)
  • $size (tổng hợp)
  • $slice (tổng hợp)
  • $zip (tổng hợp)
  • $in (tổng hợp)

←   $meta (tập hợp) $arrayElemAt (tập hợp)  →

© MongoDB, Inc 2008-2017. MongoDB, Mongo và logo chiếc lá là các nhãn hiệu đã đăng ký của MongoDB, Inc

Bài viết này hướng dẫn về cách sử dụng đối sánh tổng hợp MongoDB trong một mảng với sự trợ giúp của các mã ví dụ. Chúng ta sẽ khám phá các ví dụ khác nhau bằng cách sử dụng mảng kiểu chuỗi và mảng kiểu số

Chúng ta đã học cách sử dụng giai đoạn tổng hợp so khớp với các toán tử so sánh, toán tử

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
4/
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
5 và giai đoạn
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
6/
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
7. Bạn có thể tìm thấy bài báo đó ở đây

Ở đây, chúng tôi tập trung vào việc tìm hiểu đối sánh tổng hợp MongoDB trong một mảng để tìm tài liệu phù hợp. Để tạo một bộ sưu tập có ít nhất một trường chứa một mảng

Bạn có thể tận dụng các lệnh dưới đây để làm theo cùng với chúng tôi

Mã ví dụ

db.createCollection('student_courses');
db.student_courses.insertMany([
    {"_id": "ma01", courses: ['Java', 'Python', 'Databases'], results: [3,5]},
    {"_id": "sd02", courses: ['Java', 'Python'], results: [6,3]},
    {"_id": "gh03", courses: ['JavaScript', 'Angular'], results: [8,9]},
    {"_id": "rt04", courses: ['Data Science', 'Python'], results: [2,5]}
]);
db.student_courses.find();

đầu ra

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }

Sử dụng { "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] } { "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] } { "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] } { "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] } 8 Với { "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] } { "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] } { "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] } { "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] } 9 để tìm các tài liệu phù hợp trong một mảng trong MongoDB

Mã ví dụ

________số 8_______

đầu ra

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }

Đoạn mã này sử dụng

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
8 với
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
1 để cho phép chúng tôi sử dụng trong ngôn ngữ truy vấn. Ở đây,
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
1 xây dựng biểu thức truy vấn so sánh các trường từ các tài liệu chính xác trong giai đoạn
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
8

Hơn nữa, toán tử

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
9 chọn những tài liệu có mảng
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
5 chứa
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
6 làm phần tử mảng. Để kiểm tra nhiều giá trị trong mảng đã chỉ định, hãy sử dụng truy vấn theo cách sau

Mã ví dụ

db.student_courses.aggregate({
    $match:{
        courses:{ $in: ['Java', 'Python']}
    }
});

đầu ra

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }

Ví dụ này chỉ chọn những tài liệu mà mảng

db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
5 có hoặc là
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
6 hoặc là
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
9 (hoặc là cả hai). Tương tự, chúng ta có thể làm việc với một mảng số

Mã ví dụ

db.student_courses.aggregate({
    $match:{
        results:{ $in: [3,6]}
    }
});

đầu ra

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }

Truy vấn này chỉ truy xuất những tài liệu mà mảng

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
0 chứa hoặc là
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
1 hoặc là
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
2 (hoặc cả hai)

Mã ví dụ

db.student_courses.aggregate({
    $match:{
       $expr:{ $gt: [{$sum: "$results"}, 10]}
    }
});

đầu ra

{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }

Ở đây, chúng tôi chỉ chọn những tài liệu có tổng tất cả các phần tử của mảng

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
0 lớn hơn
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
4

Sử dụng { "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] } { "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] } { "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] } { "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] } 8 Với { "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] } { "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] } 6 để tìm tài liệu phù hợp trong một mảng trong MongoDB

Mã ví dụ

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
0

đầu ra

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
1

Ở đây, chúng tôi sử dụng toán tử

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
6 để chỉ lấy những phần tử mà mảng
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
5 chứa chính xác mảng như chúng tôi chỉ định với toán tử
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
6

Sử dụng { "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] } { "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] } { "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] } { "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] } 8 Với db.student_courses.aggregate({ $match:{ courses:{ $in: ['Java', 'Python']} } }); 1 để tìm các tài liệu phù hợp trong một mảng trong MongoDB

Mã ví dụ

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
2

đầu ra

{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }

db.student_courses.aggregate({
    $match:{
        courses:{ $in: ['Java', 'Python']}
    }
});
1 tương đương với toán tử
{ "_id" : "ma01", "courses" : [ "Java", "Python", "Databases" ], "results" : [ 3, 5 ] }
{ "_id" : "sd02", "courses" : [ "Java", "Python" ], "results" : [ 6, 3 ] }
{ "_id" : "gh03", "courses" : [ "JavaScript", "Angular" ], "results" : [ 8, 9 ] }
{ "_id" : "rt04", "courses" : [ "Data Science", "Python" ], "results" : [ 2, 5 ] }
4. Mã này truy xuất tất cả các tài liệu trong đó mảng
db.student_courses.aggregate({
    $match:{
        $expr:{ $in: ['Java', "$courses"]}
    }
});
5 chứa tất cả các phần tử được chỉ định cho toán tử
db.student_courses.aggregate({
    $match:{
        courses:{ $in: ['Java', 'Python']}
    }
});
1

Làm cách nào để khớp dữ liệu trong mảng trong MongoDB?

Toán tử $elemMatch so khớp các tài liệu chứa trường mảng với ít nhất một phần tử khớp với tất cả các tiêu chí truy vấn đã chỉ định . Nếu bạn chỉ xác định một điều kiện

Làm cách nào để tìm giá trị trong mảng đối tượng trong MongoDB?

Để tìm kiếm mảng đối tượng trong MongoDB, bạn có thể sử dụng toán tử $elemMatch . Toán tử này cho phép chúng ta tìm kiếm nhiều hơn một thành phần từ một đối tượng mảng.

Làm cách nào để tìm các đối tượng lồng nhau trong MongoDB?

Truy cập tài liệu nhúng/lồng nhau – . using dot notation and when you are using dot notation, then the field and the nested field must be inside the quotation marks.

Làm cách nào để so sánh mảng đối tượng trong MongoDB?

Bạn có thể sử dụng toán tử mảng tổng hợp như $filter hoặc $reduce để so sánh các phần tử mảng và trả về kết quả. Các toán tử mảng này hoạt động giống như các trình lặp (như lặp trong vòng lặp for trên trường mảng JavaScript hoặc Java). Xem các ví dụ về hai toán tử trong Hướng dẫn sử dụng MongoDB.