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

(Làm thế nào) có thể tổng hợp () phá vỡ một chỉ mục?

Tôi nghi ngờ rằng vấn đề không phải là tập hợp sẽ phá vỡ chỉ mục, mà thay vào đó là tập hợp không sử dụng chỉ mục và sẽ thực hiện quét tập hợp.

Các tổng hợp có thể tận dụng chỉ mục khi có $ các giai đoạn khớp và / hoặc $ sắp xếp được đặt ở đầu đường ống. Tập hợp này chỉ là một $group duy nhất , nghĩa là toàn bộ bộ sưu tập sẽ cần được lặp lại để tính số lượng.

Tôi đặt một ví dụ đơn giản bên dưới cho thấy tập hợp thực hiện quét tập hợp, ngay cả khi trường mảng được lập chỉ mục.

> db.foo.insert({ "x" : [ 1, 2 ] } )
> db.foo.insert({ "x" : [ 1 ] } )
> db.foo.createIndex({ "x" : 1 } )
...

> db.foo.aggregate([ { $group: { _id: null, cnt: { $sum : { $size: "$x" } } } } ] )
{ "_id" : null, "cnt" : 3 }

// Results of a .explain() - see 'winningPlan' below
> db.foo.explain(true).aggregate([ { $group: { _id: null, cnt: { $sum : { $size: "$x" } } } } ] )
{
    "stages" : [
        {
            "$cursor" : {
                "query" : {

                },
                "fields" : {
                    "x" : 1,
                    "_id" : 0
                },
                "queryPlanner" : {
                    "plannerVersion" : 1,
                    "namespace" : "stack.foo",
                    "indexFilterSet" : false,
                    "parsedQuery" : {

                    },
                    "winningPlan" : {
                        "stage" : "COLLSCAN",
                        "direction" : "forward"
                    },
                    "rejectedPlans" : [ ]
                },
                "executionStats" : {
                    "executionSuccess" : true,
                    "nReturned" : 2,
                    "executionTimeMillis" : 0,
                    "totalKeysExamined" : 0,
                    "totalDocsExamined" : 2,
                    "executionStages" : {
                        "stage" : "COLLSCAN",
                        "nReturned" : 2,
                        "executionTimeMillisEstimate" : 0,
                        "works" : 4,
                        "advanced" : 2,
                        "needTime" : 1,
                        "needYield" : 0,
                        "saveState" : 1,
                        "restoreState" : 1,
                        "isEOF" : 1,
                        "invalidates" : 0,
                        "direction" : "forward",
                        "docsExamined" : 2
                    },
                    "allPlansExecution" : [ ]
                }
            }
        },
        {
            "$group" : {
                "_id" : {
                    "$const" : null
                },
                "cnt" : {
                    "$sum" : {
                        "$size" : [
                            "$x"
                        ]
                    }
                }
            }
        }
    ],
    "ok" : 1,
    ...
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trên cùng một máy chủ bằng PyMongo?

  2. mongo / node TypeError:callback không phải là một hàm trên truy vấn

  3. Không thể ghi đè mô hình `người dùng` sau khi đã biên dịch nút js

  4. Không thể kết nối với nhóm Mongodb trong Kubernetes (Kết nối bị từ chối)

  5. Nhóm Mongo và đẩy:đẩy tất cả các lĩnh vực