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

Nhóm Mongodb theo trường sử dụng $ substr

Có một giải pháp bẩn nhưng hoạt động dựa trên liên kết này http://www.kamsky.org/stupid-tricks-with-mongodb/ugly-way-to-parse-a-string-with-aggregation-framework Vì vậy, tại sao không?

Để tìm vị trí ký hiệu trong chuỗi, chúng ta có thể xây dựng một điều kiện phức tạp để kiểm tra tuần tự từng ký hiệu của chuỗi để tìm ký hiệu phù hợp. Về cơ bản, nó tương tự như cách hoạt động của hàm indexOf.

function indexOf(field, character) {
    var array = [];
    var maxPos = 50;
    var searchStart = 0;

    array[maxPos]={"$cond":{"if":{"$eq":[{"$substr":[field,maxPos,1]},character]},"then":maxPos+1,else:0}};

    for ( var i=maxPos-1; i>searchStart-1; i-- ) {
         array[i]={"$cond":{"if":{"$eq":[{"$substr":[field,i,1]},character]},"then":i,"else":array[i+1]}}
    }

    return array[searchStart];
}

Vì vậy, yêu cầu MongoDB của bạn sẽ giống như sau:

db.images.aggregate([ <query> ,
             { $group: { _id: { $substr: ["$FileName", indexOf("$FileName", "_"), 999] }, files: { $push: "$$ROOT" } } },
             { $sort: { UploadDate : -1 } }
        ])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB không được ủy quyền cho truy vấn - mã 13

  2. MongoDB:Tìm tài liệu con trong tham số so khớp mảng

  3. MongoDB:Làm thế nào để giải quyết DBRef ở phía máy khách?

  4. Xây dựng nhiều chỉ mục cùng một lúc

  5. mongoDB 32-bit giới hạn 2GB, các phương pháp hay nhất