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

Trong MongoDB, tìm kiếm trong một mảng và sắp xếp theo số lượng kết quả phù hợp

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

Giả định

  • Tập dữ liệu được sử dụng ở đây giống tập dữ liệu được sử dụng trong Lấy tài liệu có thẻ trong danh sách, được sắp xếp theo tổng số kết quả phù hợp
  • 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. mongodb php - cách thực hiện truy vấn giống như INNER JOIN

  2. Cách lấy tên tháng ngắn trong SQL

  3. Loại bỏ các bản sao khi sử dụng $ unionWith trong MongoDB

  4. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native

  5. Nhập dữ liệu vào các phiên bản MongoDB mới được tạo của bạn