кодесурса
«MongoDB

MongoDB Индексы одного поля

script1adsense2code
script1adsense3code

Описание

Все индексы в MongoDB являются индексами B-дерева, которые поддерживают совпадения на соответствие и запросы диапазона. Внутри индекс упорядочивает элементы в порядке, отсортированном по значению поля индекса. Упорядочение индекса позволяет MongoDB возвращать отсортированные результаты, используя порядок документов в индексе.

MongoDB предоставляет индексы для любого поля в наборе документов. MongoDB поддерживает либо одно поле, либо несколько полей в зависимости от операций, которые нужны пользователю. Индекс по умолчанию для коллекций имеет mongoDB в поле _id, дополнительные индексы могут быть добавлены пользователем для поддержки важных запросов и операций.

Вот документы в коллекции «empinfo».

{
        "_id" : ObjectId("548eb3a051ca033c1c01054d"),
        "emp_id" : "SALS",
        "emp_name" : "Pat",
        "designation" : "clerk",
        "department" : "sales"
}
{
        "_id" : ObjectId("548eb3a051ca033c1c01054e"),
        "emp_id" : "OFFC",
        "emp_name" : "Jons",
        "designation" : "peon",
        "department" : "sales"
}
{
        "_id" : ObjectId("548eb3a051ca033c1c01054f"),
        "emp_id" : "CLC",
        "emp_name" : "Tnit",
        "designation" : "president",
        "department" : "sales"
}

Следующая команда создает индекс для столбца emp_id.

> db.empinfo.ensureIndex( { "emp_id" : 1 } );
{
        "createdCollectionAutomatically" : true,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}
If you want to see the list of  created index, here is the following command.
> db.system.indexes.find();
{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "empinfo.empinfo" }
{ "v" : 1, "key" : { "emp_id" : 1 }, "name" : "emp_id_1", "ns" : "empinfo.empinfo" }

Индексы на встроенных полях

Индексы можно создавать на полях, встроенных во вложенные документы, так как вы можете индексировать поля верхнего уровня в документах.

Существует разница между индексами во встроенных полях и индексами во вложенных документах. Индексы в поддокументе включают в себя полный контент вплоть до максимального размера индекса, тогда как индексы во встроенных полях позволяют пользователю использовать «точечную нотацию» для самостоятельного поиска во вложенных документах.

Рассмотрим следующую коллекцию с именем 'empinfo', которая содержит документы.

{
        "_id" : ObjectId("548fe6d898fd7de25e8d3aa9"),
        "emp_id" : "SALS",
        "emp_name" : "Pat",
        "address" : [
                {
                        "street" : "Court Street",
                        "city" : "London",
                        "zip" : "5698722"
                }
        ]
}
{
        "_id" : ObjectId("548fe6d898fd7de25e8d3aaa"),
        "emp_id" : "OFFC",
        "emp_name" : "Jones",
        "address" : [
                {
                        "street" : "Church Avenue",
                        "city" : "Paris",
                        "zip" : "632902"
                }
        ]
}

Следующая команда создает индекс для поля address.zip, используя следующую спецификацию:

> db.empinfo.ensureIndex( { "address.zip": 1 } );
{
        "createdCollectionAutomatically" : true,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}
If you want to see the created index, see the following command.
> db.system.indexes.find();
{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "empinfo.empinfo" }
{ "v" : 1, "key" : { "address.zip" : 1 }, "name" : "address.zip_1", "ns" : "empinfo.empinfo" }
>

Указатели на поддокументы

Индекс также может быть создан на поддокумент.

Здесь ниже образец коллекции с именем 'empinfo' содержит адрес поля в своих документах.

{
        "_id" : ObjectId("54901b4b4b71cc67737765a5"),
        "emp_id" : "SALS",
        "emp_name" : "Pat",
        "address" : {
                "street" : "Court Street",
                "city" : "London",
                "zip" : "5698722"
        }
}
{
        "_id" : ObjectId("54901b4b4b71cc67737765a6"),
        "emp_id" : "MARK",
        "emp_name" : "James",
        "address" : {
                "street" : "Church Avenue",
                "city" : "Paris",
                "zip" : "532460"
        }
}

Поле адреса является вложенным документом, содержащим встроенные поля city и zip. Следующая команда создает индекс для поля адреса в целом.

> db.empinfo.ensureIndex( { address: 1 } );
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "numIndexesAfter" : 2,
        "ok" : 1
}
If you want to lists the creating index, here is  the command below.
> db.system.indexes.find();
{ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "empinfo.empinfo" }
{ "v" : 1, "key" : { "address" : 1 }, "name" : "address_1", "ns" : "empinfo.empinfo" }

Следующий запрос может использовать индекс в поле адреса:

> db.empinfo.find( { address: { street: "Court Street", city: "London",zip:"5698722" } } ).pretty();
{
        "_id" : ObjectId("54901b4b4b71cc67737765a5"),
        "emp_id" : "SALS",
        "emp_name" : "Pat",
        "address" : {
                "street" : "Court Street",
                "city" : "London",
                "zip" : "5698722"
        }
}

Из вышеприведенного вывода видно, что при выполнении сопоставления совпадений для вложенных документов порядок полей имеет значение, и вложенные документы должны точно совпадать.

См. Пример ниже, следующий запрос не соответствует вышеуказанному документу:

db.empinfo.find( { address: { city: "London",zip:"5698722",street: "Court Street" } } );

Предыдущий: MongoDB DELETE
Далее: Введение в методы оболочки Mongodb

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code