MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongo tìm các bản sao cho các mục nhập cho hai hoặc nhiều trường

Bạn có thể dễ dàng xác định các bản sao bằng cách chạy hoạt động đường ống tổng hợp sau:

db.collection.aggregate([
    { 
        "$group": { 
            "_id": { "foreing": "$foreing", "value": "$value" }, 
            "uniqueIds": { "$addToSet": "$_id" },
            "count": { "$sum": 1 } 
        }
    }, 
    { "$match": { "count": { "$gt": 1 } } }
])

$group trong bước đầu tiên được sử dụng để nhóm các tài liệu theo foreign và giá trị value các giá trị khóa và sau đó tạo một mảng _id giá trị cho mỗi tài liệu được nhóm dưới dạng uniqueIds sử dụng trường $addToSet nhà điều hành. Điều này cung cấp cho bạn một mảng các giá trị biểu thức duy nhất cho mỗi nhóm. Nhận tổng số tài liệu được nhóm lại để sử dụng trong các giai đoạn quy trình sau với $sum nhà điều hành.

Trong giai đoạn quy trình thứ hai, hãy sử dụng $match toán tử để lọc ra tất cả các tài liệu có số lượng là 1. Các tài liệu được lọc ra đại diện cho các khóa chỉ mục duy nhất.

Các tài liệu còn lại sẽ là những tài liệu trong bộ sưu tập có các giá trị khóa trùng lặp cho cặp foreing &value .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cách Lặp lại con trỏ mongo trong một vòng lặp trong python

  2. Kiểm tra xem mọi phần tử trong mảng có khớp với điều kiện không

  3. Sử dụng toàn cầu JsonConverter trên một lớp không có thuộc tính

  4. Tra cứu MongoDB khi trường ngoại là một mảng các đối tượng

  5. Làm cách nào để lấy N bản ghi cuối cùng trong mongodb?