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

Tìm url trùng lặp trong mongodb

Giả sử một bộ sưu tập tài liệu có tên name (sử dụng name thay vì url ) trường bao gồm các giá trị trùng lặp. Tôi có hai tổng hợp trả về một số đầu ra có thể được sử dụng để xử lý thêm. Tôi hy vọng bạn sẽ thấy điều này hữu ích.

{ _id: 1, name: "jack" },
{ _id: 2, name: "john" },
{ _id: 3, name: "jim" },
{ _id: 4, name: "john" }
{ _id: 5, name: "john" }, 
{ _id: 6, name: "jim" }

Lưu ý rằng "john" có 3 lần xuất hiện và "jim" có 2 lần xuất hiện.

(1) Tổng hợp này trả về các tên trùng lặp (nhiều hơn một lần xuất hiện):

db.collection.aggregate( [
  { 
      $group: { 
          _id: "$name", 
          count: { $sum: 1 }
      } 
  },
  { 
      $group: { 
          _id: "duplicate_names", 
          names: { $push: { $cond: [ { $gt: [ "$count", 1 ] }, "$_id", "$DUMMY" ] } }
      }
  }
] )

Đầu ra:

{ "_id" : "duplicate_names", "names" : [ "john", "jim" ] }


(2) Tập hợp sau chỉ trả về _id giá trị trường cho các tài liệu trùng lặp. Ví dụ:tên "jim" có _id giá trị 36 . Đầu ra chỉ có id cho các tài liệu trùng lặp, tức là 6 .

db.colection.aggregate( [
  { 
      $group: { 
          _id: "$name", 
          count: { $sum: 1 }, 
          ids: { $push: "$_id" } 
      } 
  },
  { 
      $group: { 
          _id: "duplicate_ids",  
          ids: { $push: { $slice: [ "$ids", 1, 9999 ] } } 
      } 
  },
  { 
      $project: { 
          ids: { 
              $reduce: {
                  input: "$ids", 
                  initialValue: [ ],
                  in: { $concatArrays: [ "$$this", "$$value" ] }
              }
          }
      } 
  }
] )

Đầu ra:

{ "_id" : duplicate_ids", "ids" : [ 6, 4, 5 ] }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Percona Live 2017 - Bản tóm tắt của Somenines

  2. Cách quản lý cơ sở dữ liệu và bộ sưu tập trong MongoDB

  3. 5 cách để chèn tài liệu trong MongoDB

  4. Mongodb concat int và chuỗi

  5. MongoSocketReadException:Đã đến gần cuối luồng (sau một thời gian không hoạt động)