English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يدعم الفهرس تحليل الاستعلامات بشكل فعال. بدون فهرس، يجب على MongoDB مسح كل مستند في المجموعة لاختيار المستندات التي تتطابق مع جملة الاستعلام. هذا المسح غير فعال ويحتاج إلى معالجة MongoDB لكمية كبيرة من البيانات.
الفهرس هو بنية بيانات خاصة تُخزن جزءًا صغيرًا من مجموعة البيانات بتنسيق سهل التصفح. يُخزن الفهرس قيم الحقول المحددة أو مجموعة الحقول وفقًا للترتيب المحدد في الفهرس.
لإنشاء فهرس، يجب عليك استخدام طريقة "createIndex()" الخاصة بMongoDB.
createIndex()النحو الأساسي للطريقة كالتالي()
>db.COLLECTION_NAME.createIndex({KEY:1})
في هذا السياق، KEY هو اسم الحقل الذي يتم إنشاء الفهرس عليه، 1 يعني ترتيب تصاعدي. إذا كنت ترغب في إنشاء فهرس تصاعدي، يجب عليك استخدام -1.
>db.mycol.createIndex({"title":1}) { "createdCollectionAutomatically": false, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 } >
فيcreateIndex()في هذا الطريقة، يمكنك إرسال عدة حقول لتوليد فهرس على عدة حقول.
>db.mycol.createIndex({"title":1,"description":-1}) >
يستقبل "createIndex()" م 参数 اختياري، قائمة م 参数 الاختيارية كالتالي:
الم 参数 | النوع | الوصف |
---|---|---|
background | Boolean | عملية إنشاء الفهرس ستقوم بمنع العمليات الأخرى في قاعدة البيانات، يمكن تحديد "background" لإنشاء الفهرس بطريقة خلفية، أي إضافة "background" م 参数 اختياري. "background" القيمة الافتراضية هيfalse. |
unique | Boolean | هل الفهرس الذي تم إنشاؤه فريد. يتم تحديد "true" لإنشاء فهرس فريد. القيمة الافتراضية هيfalse. |
name | string | اسم الفهرس. إذا لم يتم تحديده، فإن MongoDB يولد اسم الفهرس من خلال ربط اسم الحقل المستخدم في الفهرس والترتيب. |
dropDups | Boolean | الإصدار 3.0+ مستبعد.عند إنشاء فهرس فريد هل يتم حذف السجلات المكررة، يتم تحديد "true" لإنشاء فهرس فريد. القيمة الافتراضية هي false. |
sparse | Boolean | 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false. |
expireAfterSeconds | integer | 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。 |
v | index version | 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。 |
weights | document | 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。 |
default_language | string | 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语 |
language_override | string | 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language. |
您可以使用MongoDB的dropIndex()方法删除特定索引。
DropIndex() 方法的基本语法如下()。
>db.COLLECTION_NAME.dropIndex({KEY:1})
此处的 key 是您要在其上创建索引的文件的名称,而1表示升序。要以降序创建索引,您需要使用 -1。
>db.mycol.dropIndex({"title":1}) { "ok" : 0, "errmsg" : "can't find index with key: { title: 1.0 }", "code" : 27, "codeName" : "IndexNotFound" }
此方法删除集合上的多个(指定)索引。
DropIndexes()方法的基本语法如下()-
>db.COLLECTION_NAME.dropIndexes()
假设我们在命名 mycol 的集合中创建了2个索引,如下所示-
> db.mycol.createIndex({"title":1,"description":-1})
以下示例删除了上面创建的mycol索引:
>db.mycol.dropIndexes({"title":1,"description":-1}) { "nIndexesWas" : 2, "ok" : 1} >
يستعيد هذا الطريقة كل الأسهم الموجودة في المجموعة.
هذا هو لغة الجملة الأساسية لـ getIndexes()
db.COLLECTION_NAME.getIndexes()
افترض أننا قمنا بإنشاء 2 أسهم في مجموعة mycol المسمى، كما يلي-
> db.mycol.createIndex({"title":1,"description":-1})
السجلات التالية استعلام جميع الأسهم في مجموعة mycol-
> db.mycol.getIndexes() [ { "v": 2, "key": { "_id": 1 } "name": "_id_", "ns": "test.mycol" } { "v": 2, "key": { "title": 1, "description": -1 } "name": "title_1_description_-1", "ns": "test.mycol" } ] >