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

Nhận tài liệu có các thẻ trong danh sách, được sắp xếp theo tổng số kết quả phù hợp

Như tôi đã trả lời trong Tìm kiếm trong MongoDB trong một mảng và sắp xếp theo số lượng kết quả phù hợp

Có thể sử dụng Khung tổng hợp.

Giả định

  • tags thuộc tính là một tập hợp (không có phần tử lặp lại)

Truy vấn

Cách tiếp cận này buộc bạn phải hủy bỏ các kết quả và đánh giá lại vị từ đối sánh với các kết quả chưa được tua, vì vậy nó thực sự không hiệu quả.

db.test_col.aggregate(
    {$match: {tags: {$in: ["shirt","cotton","black"]}}}, 
    {$unwind: "$tags"}, 
    {$match: {tags: {$in: ["shirt","cotton","black"]}}},
    {$group: {
        _id:{"_id":1}, 
        matches:{$sum:1}
    }}, 
    {$sort:{matches:-1}}
);

Kết quả mong đợi

{
    "result" : [
        {
            "_id" : {
                "_id" : ObjectId("5051f1786a64bd2c54918b26")
            },
            "matches" : 3
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1726a64bd2c54918b24")
            },
            "matches" : 2
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1756a64bd2c54918b25")
            },
            "matches" : 1
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhập dữ liệu CSV dưới dạng một mảng trong MongoDB bằng cách sử dụng mongoimport

  2. Các trường hợp sử dụng cho NoSQL

  3. Có cách nào để triển khai phân trang trong spring webflux và phản ứng dữ liệu mùa xuân không

  4. 'process.nextTick (function () {throw err;})' - Undefined không phải là một hàm (mongodb / mongoose)

  5. Cách quản lý người dùng và xác thực trong MongoDB