Nhận chỉ mục MongoDB

Khi bạn có các bộ sưu tập với lượng dữ liệu lớn, điều rất quan trọng là tạo các chỉ mục phù hợp. Các truy vấn MongoDB có thể nhanh hơn đáng kể với các chỉ mục phù hợp được tạo trên các bộ sưu tập để đáp ứng nhu cầu sắp xếp và lọc dữ liệu của ứng dụng. MongoDB tự động tạo một chỉ mục duy nhất trên trường _id trong quá trình tạo bộ sưu tập. Tất cả các chỉ mục khác phải được tạo thủ công

Đôi khi các lập trình viên không duy trì một tập lệnh riêng cho tất cả các chỉ mục mà họ tạo trong dự án. Để giải quyết các vấn đề về hiệu suất, họ có thể tạo các chỉ mục trực tiếp trên cơ sở dữ liệu mà không cần thêm chúng vào một tệp tập lệnh riêng. Đây là một thực tế không tốt vì khi một cơ sở dữ liệu tương tự được tạo cho mục đích thử nghiệm, nó có thể thiếu một số chỉ mục quan trọng gây ra tất cả các loại lỗi ứng dụng. Trong những tình huống như vậy, tập lệnh sau sẽ hữu ích để trích xuất tất cả các chỉ mục trong cơ sở dữ liệu MongoDb đang chạy

Bản thân đầu ra của tập lệnh MongoDB sau đây là tập lệnh MongoDB có thể được thực thi trên một phiên bản cơ sở dữ liệu khác để tạo lại tất cả các chỉ mục. Tôi cũng khuyên bạn nên cam kết đầu ra cho hệ thống kiểm soát phiên bản của mình và yêu cầu các nhà phát triển cập nhật nó trước khi áp dụng một chỉ mục trên cơ sở dữ liệu. Bạn cũng có thể sử dụng script để so sánh các chỉ mục trên cơ sở dữ liệu trong các môi trường khác nhau như dev, sit, uat và production

Cách xuất tất cả các chỉ mục trong cơ sở dữ liệu MongoDB dưới dạng tập lệnh

// iterate through every collection in MongoDB database
db.getCollectionNames().forEach(function(collection) {
    var indexes = db.getCollection(collection).getIndexes();
    // now iterate through every index in the collection
    indexes.forEach(function(index) {
        // we don't need these as it will be auto created
        delete index.v;delete index.ns;
        var key = index.key;
        delete index.key
        var options = {};
        // let us also copy all options associated with the index
        // index property unique is an example
        for (var option in index) {
            options[option] = index[option]
        }
        // Create script output
        print("db.getCollection(\""+collection+"\").createIndex("+tojson(key)+", "+tojson(options)+");");
    });
});

Bạn có thể chạy tập lệnh trên dưới dạng tệp bằng trình bao MongoDB hoặc bạn có thể chỉ cần sao chép, dán và chạy tương tự trên ứng dụng khách MonogDB, chẳng hạn như RoboMongo. Đầu ra có thể được lưu dưới dạng tệp script để tạo chỉ mục của cơ sở dữ liệu

Đôi khi bạn có thể muốn áp dụng các chỉ mục trên một bộ sưu tập hiện có cho một bản sao của bộ sưu tập trên cùng một cơ sở dữ liệu. Trong những trường hợp như vậy, bạn có thể sử dụng tập lệnh sau. Bạn cần thay tên bộ sưu tập c1 và c2 bằng tên thực của bộ sưu tập trong cơ sở dữ liệu của bạn. Lưu ý việc sử dụng tùy chọn nền (chỉ cần thiết trong các phiên bản MongoDB dưới 4. 2) để đảm bảo rằng việc tạo chỉ mục không chặn các hoạt động trên bộ sưu tập

Làm cách nào để sao chép các chỉ mục từ một bộ sưu tập này sang một bộ sưu tập khác trong MongoDB?

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});

Xin lưu ý rằng tất cả các ví dụ đưa ra đều được thử nghiệm trên MongoDB 3. 6. Các tập lệnh này cũng sẽ hoạt động nếu bạn đang sử dụng MongoDB 3. 6 API trên cơ sở dữ liệu Azure CosmosDB

Giống như bách khoa toàn thư, cơ sở dữ liệu là một kho thông tin dồi dào có thể truy cập. Để trả lời, tìm một mẩu thông tin cụ thể trong bách khoa toàn thư sẽ yêu cầu sàng lọc qua từng trang cho đến khi bạn tìm thấy những gì bạn đang tìm kiếm. Sự không hiệu quả này là lý do tại sao một bách khoa toàn thư có một chỉ mục chỉ cho bạn đến trang chính xác mà bạn cần chuyển đến để biết thông tin bạn đang tìm kiếm

Tương tự, chỉ mục cơ sở dữ liệu sẽ chỉ cho bạn đúng nơi để có thông tin hiệu quả hơn. Trong MongoDB, một truy vấn không được lập chỉ mục "tìm kiếm trong toàn bộ sách" được gọi là quét bộ sưu tập

Các chỉ mục có thể được coi là lối tắt để truy cập dữ liệu của bạn để không cần phải quét toàn bộ cơ sở dữ liệu để tìm thấy những gì bạn đang tìm kiếm. Trong bài viết này, chúng tôi sẽ giới thiệu các chỉ mục trong MongoDB, thảo luận về thời điểm sử dụng chúng và cách quản lý chúng

Nhận chỉ mục MongoDB

LIÊN QUAN ĐẾN PRISMA. IO

Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất

Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có

Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu

Khi nào bạn nên sử dụng chỉ mục

Theo phép loại suy bách khoa toàn thư của chúng tôi, người ta có thể nghĩ rằng có một dòng chỉ mục cho mỗi từ trong cuốn sách. Nếu sử dụng chỉ mục luôn nhanh hơn thì điều này có vẻ có lợi. Tuy nhiên, như bạn có thể tưởng tượng, càng nhiều dòng từ trong một mục lục, cuốn sách càng trở nên lớn hơn. Tại một số điểm, kích thước của cuốn sách cần thiết để phù hợp với việc lập chỉ mục cho từng từ trở nên không hiệu quả. Có nhiều từ như "the" hoặc "bởi vì" ít hữu ích hơn để tìm kiếm so với "hà mã"

Điều này tương tự như một chỉ mục trong MongoDB và cơ sở dữ liệu nói chung. Mặc dù có, nhưng sẽ nhanh hơn nếu có chỉ mục cho bất kỳ dữ liệu nào mà truy vấn có thể sử dụng, đơn giản là có dữ liệu không cần lập chỉ mục. Giống như kích thước của một cuốn sách, việc thêm quá nhiều chỉ mục vào cơ sở dữ liệu cũng chiếm dung lượng và có tác động bất lợi đến các thao tác ghi trên cơ sở dữ liệu nếu không được kiểm tra

Chỉ mục là một cách cực kỳ hữu ích để tối ưu hóa quyền truy cập vào dữ liệu cụ thể thường được sử dụng làm tiêu chí lựa chọn trong các truy vấn. Biết khi nào nên sử dụng chúng là rất quan trọng, vì vậy hãy đảm bảo rằng bạn đang thêm chúng vào các trường cơ sở dữ liệu thường được truy vấn sẽ giúp quá trình đọc của bạn hiệu quả mà không ảnh hưởng tiêu cực đến kích thước cơ sở dữ liệu và hiệu quả ghi

Cách tạo chỉ mục

Bây giờ chúng ta đã hiểu chỉ mục là gì và khi nào sử dụng chúng, chúng ta có thể tìm hiểu phương pháp tạo một chỉ mục.

Khi bạn đã xác định được trường có thể hưởng lợi từ việc lập chỉ mục, bạn sử dụng phương thức

db.mycoll.createIndex( { "country": 1 } )

7 của MongoDB. Cú pháp cơ bản như sau

db.COLLECTION_NAME.createIndex( { "FIELD_NAME": 1 } )

db.mycoll.createIndex( { "country": 1 } )

8 là tên của trường mà bạn muốn tạo chỉ mục trên đó và

db.mycoll.createIndex( { "country": 1 } )

9 chỉ ra thứ tự tăng dần

Một ví dụ sử dụng phương pháp này sẽ trông giống như

db.mycoll.createIndex( { "country": 1 } )

Bạn cũng có thể tạo chỉ mục trên nhiều trường bằng phương pháp

db.mycoll.createIndex( { "country": 1 } )

7 bằng cách tạo danh sách được phân tách bằng dấu phẩy như sau

________số 8

Cách hiển thị chỉ mục

Khi bạn đã bắt đầu tạo chỉ mục, bạn có thể muốn kiểm tra xem chỉ mục nào tồn tại trên các phiên bản cơ sở dữ liệu của mình. Trong MongoDB, bạn có thể sử dụng phương thức

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

1 để trả về các mô tả của tất cả các chỉ mục trong một bộ sưu tập

Cú pháp cơ bản để xem tất cả các chỉ mục của bộ sưu tập của bạn là

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
0

Sử dụng ví dụ trước từ khi chúng ta tạo một chỉ mục, phần sau hiển thị phương thức và kết quả trả về

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
1

với sự trở lại của

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
2

Thông tin chỉ mục bao gồm các khóa và tùy chọn được sử dụng để tạo chỉ mục

LIÊN QUAN ĐẾN PRISMA. IO

Nếu bạn quan tâm đến việc sử dụng các chỉ mục toàn văn với MongoDB, Prisma có tính năng Xem trước

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

2 cho phép bạn dễ dàng di chuyển các chỉ mục toàn văn vào lược đồ Prisma để đảm bảo an toàn cho loại và bảo vệ khỏi các lỗi xác thực

Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu

Cách hiểu hiệu suất chỉ mục

Giờ đây, với khả năng tạo và kiểm tra những chỉ mục nào tồn tại trên bộ sưu tập của bạn, bạn sẽ muốn xem liệu các chỉ mục của mình có hoạt động theo cách bạn mong đợi hay không

Để bắt đầu ví dụ, chúng ta sẽ làm việc với cơ sở dữ liệu

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

3 và bộ sưu tập

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

4 có ~50. tài liệu 3k. Đây là một bộ sưu tập mẫu do Đại học MongoDB cung cấp mô phỏng kho dữ liệu về các bình luận phim và truyền hình

Để hiểu hiệu suất của một chỉ mục, trước tiên chúng tôi muốn chạy một truy vấn không có chỉ mục. Truy vấn sau đây sẽ trả về tất cả 273 tài liệu trong bộ sưu tập là nhận xét của

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

5

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
7

Bây giờ, nếu chúng tôi thêm kế hoạch giải thích của MongoDB vào truy vấn, chúng tôi sẽ thấy hiệu suất của truy vấn này

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
8

Điều này dẫn đến kết quả như sau

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
9

Có một số kết quả chính cần tập trung vào trong kết quả đầu ra này. Đầu tiên, chúng ta có thể thấy trong

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

6 rằng

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

7 cho truy vấn này là một

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

8. Điều này có nghĩa là quá trình quét bộ sưu tập đã xảy ra để hoàn thành truy vấn này với

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

9 trong số 50.303 và
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
00 trong 23 mili giây. Truy vấn phải kiểm tra mọi tài liệu trong bộ sưu tập và mất 23 mili giây mặc dù
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
01 chỉ có 273 tài liệu. Mặc dù 23ms nghe có vẻ không nhiều, nhưng điều này có thể lâu hơn nhiều đối với bộ sưu tập chứa một triệu tài liệu

Nếu truy vấn trên

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
02 sẽ là một mẫu lặp lại cho ứng dụng truy cập bộ sưu tập này, chúng tôi có thể muốn tạo một chỉ mục trên trường này. Để làm như vậy, chúng tôi viết như sau

db.mycoll.createIndex( { "country": 1 } )

7

Nếu chúng ta thực hiện cùng một truy vấn với kế hoạch giải thích từ trước

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
8

db.mycoll.createIndex( { "country": 1 } )

1

So sánh với truy vấn chưa được lập chỉ mục, bây giờ chúng tôi thấy rằng

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
03 hiện là
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
04 cho biết một chỉ mục đã được sử dụng

Ngoài ra, chúng tôi thấy rằng

db.COLLECTION_NAME.createIndex( { "FIELD_NAME_1": 1, "FIELD_NAME_2": -1 } )

9 hiện chỉ là 273 tài liệu trong đó
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
02 là
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
07 chứ không phải toàn bộ 50.303 tài liệu. Hiệu quả tăng lên này có thể được nhìn thấy đặc biệt ngay bây giờ với
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
00 tổng cộng là 0 mili giây. Chỉ mục mới của chúng tôi trên
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
02 đã liên lạc với truy vấn chính xác nơi cần tìm để tìm dữ liệu mà nó đang tìm kiếm

Phân tích kế hoạch giải thích về các truy vấn quan trọng nhất của bạn sẽ cho bạn thấy hiệu suất của chỉ mục hoặc đánh dấu khi cần tạo một truy vấn để tăng hiệu quả cho ứng dụng của bạn

Làm thế nào để thả một chỉ mục

Mặc dù kế hoạch giải thích có thể cho thấy sự cần thiết của một chỉ mục, nhưng nó cũng có thể làm ngược lại. Ví dụ: nếu một chỉ mục không còn cần thiết hoặc không thêm hiệu suất được cải thiện nhiều đó, bạn có thể bỏ chỉ mục đó để dành chỗ hoặc đạt được một số hiệu suất ghi.

Để xóa một chỉ mục trên bộ sưu tập của bạn, cú pháp cơ bản như sau bằng cách sử dụng phương thức

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
10

db.mycoll.createIndex( { "country": 1 } )

2

Nếu chúng tôi muốn bỏ ví dụ về chỉ số

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
11 của chúng tôi từ trước đó, chúng tôi sẽ viết như sau

db.mycoll.createIndex( { "country": 1 } )

3

Sự kết luận

Trong hướng dẫn này, chúng tôi đã thảo luận cách truy vấn cơ sở dữ liệu hiệu quả dẫn đến trải nghiệm người dùng được cải thiện cho ứng dụng của bạn. Ngoài ra, những người sử dụng dữ liệu để phân tích hoặc các nỗ lực nội bộ khác sẽ có hiệu suất nhanh hơn và dễ dàng làm việc với cơ sở dữ liệu. Biết cách lập chỉ mục và cách chỉ mục hoạt động là chìa khóa để đạt được hiệu quả truy vấn

Chúng tôi đã đề cập đến những điều cơ bản về tạo, phân tích và loại bỏ các chỉ mục trong MongoDB. Biết các nền tảng lập chỉ mục này sẽ cung cấp cơ sở phù hợp để tiếp tục lập chỉ mục nâng cao hơn với MongoDB

LIÊN QUAN ĐẾN PRISMA. IO

Nếu bạn đang sử dụng MongoDB, hãy kiểm tra trình kết nối MongoDB của Prisma. Bạn có thể tự tin sử dụng Prisma Client để quản lý cơ sở dữ liệu MongoDB sản xuất

Để bắt đầu làm việc với MongoDB và Prisma, hãy xem hướng dẫn bắt đầu từ đầu của chúng tôi hoặc cách thêm vào một dự án hiện có

Prisma là bộ công cụ cơ sở dữ liệu mã nguồn mở dành cho Typescript và Node. js nhằm mục đích giúp các nhà phát triển ứng dụng làm việc hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu

Câu hỏi thường gặp

Chỉ mục 2d trong MongoDB là gì?

Sử dụng chỉ mục

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
12 cho dữ liệu được lưu trữ dưới dạng điểm trên mặt phẳng hai chiều. Nó dành cho các cặp tọa độ kế thừa trên các phiên bản MongoDB cũ hơn

Chỉ mục

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
12 có thể tham chiếu hai trường. Đầu tiên phải là trường vị trí. Chỉ mục hỗn hợp
var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
12 xây dựng các truy vấn chọn đầu tiên trên trường vị trí, sau đó lọc các kết quả đó theo tiêu chí bổ sung

Làm cách nào để bạn tạo một chỉ mục trên một bộ sưu tập lớn trong MongoDB?

Cho dù là một bộ sưu tập nhỏ hay lớn, bạn vẫn sẽ sử dụng phương pháp

db.mycoll.createIndex( { "country": 1 } )

7

Nếu bạn đang gặp sự cố khi xây dựng chỉ mục trên bộ sưu tập lớn hơn, thì bạn có thể muốn xem xét chia tỷ lệ theo chiều ngang để dễ quản lý hơn

MongoDB cũng đề xuất phương pháp xây dựng chỉ mục cuộn

Làm cách nào để bạn lập chỉ mục các trường đối tượng được nhúng trong MongoDB?

Để lập chỉ mục và trường đối tượng được nhúng trong MongoDB, bạn có thể sử dụng ký hiệu dấu chấm

Ví dụ: nếu bạn có ứng dụng theo dõi sách đã đọc, thì có thể có một bộ sưu tập cho từng người dùng có cấu trúc như sau

db.mycoll.createIndex( { "country": 1 } )

4

Để tạo một chỉ mục trên trường

var indexes = db.c1.getIndexes();
// now iterate through every index in the collection
indexes.forEach(function(index) {
    // we don't need these as it will be auto created
    delete index.v;delete index.ns;
    var key = index.key;
    delete index.key
    var options = {};
    // let us also copy all options associated with the index
    // index property unique is an example
    for (var option in index) {
        options[option] = index[option]
    }
    // Copy indexes to a new collection!
    db.c2.createIndex(key, options);
});
16 được nhúng, hãy viết câu lệnh sau

db.mycoll.createIndex( { "country": 1 } )

5

Chỉ số phức hợp trong MongoDB là gì?

Chỉ mục phức hợp là một cấu trúc chỉ mục duy nhất chứa tham chiếu đến nhiều trường trong tài liệu của bộ sưu tập

Cú pháp cơ bản để tạo chỉ mục ghép như sau

db.mycoll.createIndex( { "country": 1 } )

6

Chỉ mục không duy nhất trong MongoDB là gì?

Chỉ mục duy nhất đảm bảo rằng không có hai hàng nào của bảng có giá trị trùng lặp trong cột hoặc cột được lập chỉ mục. Trong trường hợp của MongoDB, nó là một giá trị trùng lặp trong một hoặc nhiều trường của tài liệu

MongoDB $in có sử dụng chỉ mục không?

MongoDB sử dụng lập chỉ mục để xử lý truy vấn hiệu quả hơn. Nếu không có lập chỉ mục, thì MongoDB phải quét mọi tài liệu trong bộ sưu tập và chỉ truy xuất những tài liệu khớp với truy vấn.

Chỉ mục trong MongoDB là gì?

Chỉ mục là cấu trúc dữ liệu đặc biệt [1] lưu trữ một phần nhỏ tập dữ liệu của bộ sưu tập ở dạng dễ duyệt. Chỉ mục lưu trữ giá trị của một trường cụ thể hoặc tập hợp các trường, được sắp xếp theo giá trị của trường