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

Sắp xếp theo mức độ liên quan với MongoDB

MapReduce và thực hiện nó ở phía máy khách sẽ quá chậm - bạn nên sử dụng khung tổng hợp (mới trong MongoDB 2.2).

Nó có thể trông giống như sau:

db.collection.aggregate([
   { $match : { "tags": { "$in": ["bar", "hello"] } } },
   { $unwind : "$tags" },
   { $match : { "tags": { "$in": ["bar", "hello"] } } },
   { $group : { _id: "$title", numRelTags: { $sum:1 } } },
   { $sort : { numRelTags : -1 } }
   //  optionally
   , { $limit : 10 }
])

Lưu ý rằng các thành viên đường ống thứ nhất và thứ ba trông giống hệt nhau, điều này là có chủ đích và cần thiết. Đây là những gì các bước thực hiện:

  1. chỉ chuyển những tài liệu có thẻ "bar" hoặc "hello" trong đó.
  2. giải phóng mảng thẻ (nghĩa là chia thành một tài liệu cho mỗi phần tử thẻ
  3. chỉ chuyển chính xác các thẻ "bar" hoặc "hello" (tức là loại bỏ phần còn lại của các thẻ)
  4. nhóm theo tiêu đề (cũng có thể là "$ _id" hoặc bất kỳ sự kết hợp nào khác của tài liệu gốc thêm vào số lượng thẻ (của "bar" và "hello") mà nó có
  5. sắp xếp theo thứ tự giảm dần theo số lượng thẻ có liên quan
  6. (tùy chọn) giới hạn nhóm được trả về ở mức 10 đầu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tìm kiếm văn bản Mongoose với một phần chuỗi

  2. Làm cách nào để lấy tất cả các giá trị có chứa một phần của chuỗi bằng cách sử dụng mongoose find?

  3. Ưu điểm của việc sử dụng cơ sở dữ liệu không có lược đồ như MongoDB so với cơ sở dữ liệu quan hệ là gì?

  4. Làm thế nào để chuyển đổi SQL dạng quan hệ nhiều-nhiều thành đối tượng mongoDB?

  5. PyMongo vs MongoEngine cho Django