Tôi biết điều này là hơi muộn, nhưng tôi nghĩ rằng tôi sẽ ném một chút mã vào đây. Tôi muốn có một mô hình được lập chỉ mục vì hai lý do:
- Tôi có thể sử dụng nó như một giao diện, tức là tôi buộc phải nhập thông tin này vào vì nó là một phần của những gì mô hình yêu cầu. Điều này đảm bảo rằng tôi có một tập dữ liệu sạch. Đây chỉ là tùy chọn, không phải là bắt buộc.
- Các tìm kiếm được lập chỉ mục nhanh hơn so với khi chúng không được lập chỉ mục. Tôi chưa thực hiện đủ nghiên cứu về vấn đề này để tìm hiểu xem đây có phải là trường hợp của thư viện jenssegers . Nhưng tôi thấy hợp lý với tôi rằng, nếu bạn sử dụng một lược đồ để thiết lập một tập hợp và đặt nó để lập chỉ mục các trường này, thì sẽ nhanh hơn khi tìm kiếm các bản ghi trong tập hợp này. Bạn cũng có thể thiết lập điều này theo cách thủ công từ phía Mongo nhưng tôi thích rằng bạn có thể làm điều đó với tiện ích mở rộng Eloquent này.
Vì vậy, với người đang đọc bài viết này, nếu tôi đã thuyết phục bạn bằng lập luận chưa được xác minh này và bạn muốn thiết lập một lược đồ, tôi thấy rằng việc thiết lập bộ sưu tập rất dễ dàng nhưng không dễ dàng để loại bỏ nó. Nếu bạn muốn di chuyển toàn bộ ( lưu ý rằng bạn sẽ mất tất cả dữ liệu khi thực hiện việc này ) thì bạn có thể sử dụng mã bên dưới:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateYourCollectionTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('mongodb')->create('collection_name', function ($collection) {
$collection->index('field_1');
$collection->index('field_2');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
DB::connection('mongodb')->drop(['collection_name']);
}
}