Статьи

MongoDB Shell Guide — Операции и команды

Эта статья является частью нашего курса Академии под названием MongoDB — A Scalable NoSQL DB .

В этом курсе вы познакомитесь с MongoDB. Вы узнаете, как установить его и как управлять им через оболочку. Кроме того, вы узнаете, как получить программный доступ к нему через Java и как использовать Map Reduce с ним. Наконец, будут объяснены более сложные понятия, такие как шардинг и репликация. Проверьте это здесь !

1. Введение

Оболочка MongoDB — это лучший инструмент для обнаружения функций MongoDB и управления каждым аспектом развертывания вашего сервера, экземпляров, баз данных, коллекций и документов. Он основан на языке JavaScript для выполнения команд и запросов. Пожалуйста, не беспокойтесь, если у вас мало или нет знаний о JavaScript : в большинстве случаев вы сможете легко понять каждый пример, так как есть общий шаблон для подражания.

Поскольку JSON является форматом для управления документом, он также используется для указания команд и запросов, а также для возврата их результатов. Такое объединение приносит много преимуществ, потому что JSON по своей природе прост, удобен для человека и легок для понимания.

В этой части руководства мы намерены выполнить большинство команд и запросов, поддерживаемых MongoDB, используя его оболочку, за исключением тех, которые относятся к шардингу (будет подробно рассмотрено в части 4. Руководство по шардингу MongoDB ) и репликации (будет рассмотрено подробно в части 5. Руководство по репликации MongoDB ). Более сложные темы будут рассмотрены в части 7. Руководство по безопасности, профилированию, индексированию, курсорам и массовым операциям MongoDB .

Каждый раздел посвящен определенному аспекту MongoDB : мы начинаем с помощников команд оболочки , затем смотрим на базы данных , коллекции и документы , переходим к запросам и агрегатам и заканчиваем командами, специфичными для сервера .

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

В следующих разделах предполагается, что ваш экземпляр сервера MongoDB запущен и работает на локальном компьютере, как описано в части 1. Установка MongoDB — Как установить MongoDB .

2. Помощники командных оболочек

Оболочка MongoDB предоставляет несколько командных помощников, которые позволяют устанавливать контекст и неявно заполнять переменные оболочки, включая:

  • db: текущая переменная контекста базы данных
  • rs: контекстная переменная набора реплик
  • sh: контекстная переменная шардинга

Без предоставленных аргументов командной строки оболочка MongoDB по умолчанию подключается к локальному экземпляру сервера MongoDB через порт 27017 и базе данных с проверкой имени (которая может физически отсутствовать на диске).

команда использовать <база данных>
Описание Переключает текущую базу данных на <database> и назначает переменную оболочки db текущей базе данных.
пример В оболочке MongoDB давайте выполним команду: использовать mydb
02.USE
Ссылка http://docs.mongodb.org/manual/reference/mongo-shell/#command-helpers

использовать <база данных>

команда показать дбс

показать базы данных

Описание Выводит список всех баз данных на экземпляре сервера.
пример В оболочке MongoDB давайте выполним команду: show dbs (или show database)
Ссылка http://docs.mongodb.org/manual/reference/mongo-shell/#command-helpers

показать дбс
показать базы данных

команда показать коллекции
Описание Выводит список всех коллекций для текущей базы данных.
пример В оболочке MongoDB давайте выполним команды:

  • использовать местный
  • показать коллекции

02.SHOW.COLLECTIONS

Ссылка http://docs.mongodb.org/manual/reference/mongo-shell/#command-helpers

показать коллекции

команда показать пользователям
Описание Выводит список пользователей для текущей базы данных с их ролями и пользовательскими данными (если есть).
пример В оболочке MongoDB давайте выполним команду: show users 02.SHOW.USERS
Ссылка http://docs.mongodb.org/manual/reference/mongo-shell/#command-helpers

показать пользователям

команда показать роли
Описание Выводит список всех ролей, как пользовательских, так и встроенных, для текущей базы данных.
пример В оболочке MongoDB давайте выполним команду: show role 02.SHOW.ROLES

Примечание. Отображается только фрагмент выходных данных.

Ссылка http://docs.mongodb.org/manual/reference/mongo-shell/#command-helpers

показать роли

команда показывать логи
Описание Показывает доступные имена регистратора.
пример В оболочке MongoDB давайте выполним команду: show logs 02.SHOW.LOGS
Ссылка http://docs.mongodb.org/manual/reference/mongo-shell/#command-helpers

показывать логи

команда показать журнал [имя]
Описание Выводит последний сегмент журнала в памяти. Если имя регистратора не указано, глобальный регистратор будет использоваться по умолчанию.
пример В оболочке MongoDB давайте выполним команду: show log global 02.SHOW.LOG

показать журнал [имя]

команда нагрузка (<имя файла>)
Описание Загружает и выполняет файл JavaScript с именем filename в текущей среде оболочки MongoDB .
пример Давайте подготовим пример сценария db.js , который находится в папке установки MongoDB , который просто перечисляет все доступные базы данных и выводит их имена на консоль:

1
2
3
4
5
result = db.getSiblingDB( 'admin' )
.runCommand( { listDatabases: 1 } );
for( index in result.databases ) {
    print( result.databases[ index ].name );
}

В оболочке MongoDB давайте выполним команду: load (‘db.js’)

02.LOAD

Ссылка http://docs.mongodb.org/manual/reference/method/load/

нагрузка (<имя файла>)

команда Помогите
Описание Показывает быструю помощь по командам оболочки.
пример В оболочке MongoDB давайте выполним команду: help 02.HELP
Ссылка http://docs.mongodb.org/manual/reference/mongo-shell/#command-helpers

Помогите

В оболочке MongoDB есть как минимум два способа запуска команд:

  • используя общий вызов функции db.runCommand ()
  • используя более удобные вызовы функции-оболочки db. <command> или db. <collection>. <command>

В большинстве случаев второй вариант гораздо более читабелен, и это будет выбор для наших примеров в следующих разделах. В большинстве случаев оба варианта будут показаны рядом (если применимо), поэтому вы сможете выбрать свой любимый способ запуска команд. Обратите внимание, что не все команды имеют оболочки оболочки MongoDB, и поэтому их можно запускать только с помощью вызова функции db.runCommand () .

команда db.runCommand (<команда>)
Описание Предоставляет помощника для запуска указанных команд базы данных. Это предпочтительный метод для выдачи команд базы данных, поскольку он обеспечивает согласованный интерфейс между оболочкой и драйверами.
пример В оболочке MongoDB давайте выполним команду: db.runCommand ({buildInfo: 1})

02.DB.RUNCOMMAND

Ссылка http://docs.mongodb.org/manual/reference/method/db.runCommand/

db.runCommand (<команда>)

команда версия()
Описание Возвращает текущую версию экземпляра оболочки MongoDB .
пример В оболочке MongoDB давайте выполним команду: version () 02.VERSION
Ссылка http://docs.mongodb.org/manual/reference/method/version/

версия()

команда getHostName ()

имя хоста ()

Описание Возвращает имя хоста системы, в которой работает оболочка MongoDB .
пример В оболочке MongoDB давайте выполним команду: hostname () (или getHostName () ) 02.HOSTNAME
Ссылка http://docs.mongodb.org/manual/reference/method/hostname/

http://docs.mongodb.org/manual/reference/method/getHostName/

getHostName ()
имя хоста ()

команда getMemInfo ()
Описание Возвращает документ с двумя полями, в которых указан объем памяти (в мегабайтах), используемый оболочкой JavaScript MongoDB :

  • резидент : подмножество памяти, в настоящее время хранящейся в физической памяти
  • виртуальная : рабочая память, обычно располагаемая как на диске, так и в физической памяти
пример В оболочке MongoDB давайте выполним команду: getMemInfo () 02.GETMEMINFO
Ссылка http://docs.mongodb.org/manual/reference/method/getMemInfo/

getMemInfo ()

команда уволиться()
Описание Выход из текущего сеанса оболочки.
Ссылка http://docs.mongodb.org/manual/reference/method/quit/

уволиться()

3. Базы данных

База данных — это контейнер данных верхнего уровня в MongoDB, который содержит одну или несколько коллекций документов. Для каждой базы данных MongoDB создает физический файл (или файлы) на диске, активно выделяя файлы данных, чтобы зарезервировать пространство и избежать фрагментации файловой системы.

Имена файлов данных следуют шаблону: первый файл данных имеет имя <databasename> .0, следующий — <databasename> .1 и так далее. Размер первого предварительно выделенного файла составляет 64 мегабайта , второй — 128 мегабайт , следующий — 256 мегабайт и т. Д., Максимальный размер — 2 гигабайта (в этот момент все последующие файлы будут иметь размер 2 гигабайта ). , Следует помнить одну вещь: MongoDB не будет постоянно создавать базу данных, пока в нее не будут вставлены данные.

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

команда db.help ()
Описание Показать справку для методов базы данных.
пример В оболочке MongoDB давайте выполним команду: db.help () 02.DB.HELP

Примечание. Отображается только фрагмент выходных данных.

Ссылка http://docs.mongodb.org/manual/reference/method/db.help/#db.help

db.help ()

команда db.commandHelp (<команда>)
Описание Отображает справочную информацию для конкретной команды <команда> с примерами использования и ожидаемыми параметрами.
пример В оболочке MongoDB давайте выполним команду: db.commandHelp (‘filemd5’) 02.DB.COMMANDHELP
Ссылка http://docs.mongodb.org/manual/reference/method/db.commandHelp/

db.commandHelp (<команда>)

команда db.getName ()
Описание Возвращает текущее имя базы данных.
пример В оболочке MongoDB давайте выполним команду: db.getName () 02.DB.GETNAME
Ссылка http://docs.mongodb.org/manual/reference/method/db.getName/

db.getName

команда db.getSiblingDB (<база>)
Описание Возвращает другую базу данных без изменения переменной db в среде оболочки. Его можно использовать в качестве альтернативы использованию помощника <database> (см., Пожалуйста, Shell Command Helpers ).
пример В оболочке MongoDB давайте выполним команду: db.getSiblingDB (‘admin’). GetName () 02.DB.GETSIBLINGDB
Ссылка http://docs.mongodb.org/manual/reference/method/db.getSiblingDB/

db.getSiblingDB (<база>)

Каждый экземпляр сервера MongoDB имеет свою собственную локальную базу данных, в которой хранятся данные, используемые в процессе репликации, и другие данные, специфичные для экземпляра. Репликация не затрагивает локальную базу данных: коллекции в локальной базе данных никогда не реплицируются ( часть 5. В руководстве по репликации MongoDB больше говорится о репликации). Кроме того, существует административная база данных — привилегированная база данных, к которой пользователи должны иметь доступ для выполнения определенных административных команд.

Для запуска команды в контексте базы данных администратора доступны следующие параметры:

  • 1
    2
    use admin
    db.runCommand( <command> )

    Обратите внимание, что текущая база данных будет переключена на администратора .

  • 1
    db.getSiblingDB( 'admin' ) .runCommand( <command> )

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

  • 1
    db.adminCommand( <command> )

    Ярлык для db.getSiblingDB (‘admin’) .runCommand (<команда>) .

команда listCommands
обертка db.listCommands ()
Описание Отображает список всех команд базы данных с примерами использования и ожидаемыми параметрами. Команды, которые требуют административных привилегий, помечены как adminOnly .
пример В оболочке MongoDB давайте выполним команду: db.listCommands () 02.DB.LISTCOMMANDS
В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({listCommands: 1}) Примечание: показан только фрагмент выходных данных.
Ссылка http://docs.mongodb.org/manual/reference/command/listCommands/

http://docs.mongodb.org/manual/reference/method/db.listCommands/

listCommands

команда listDatabases
Описание Эта команда предоставляет список существующих баз данных вместе с базовой статистикой о них. Он должен быть запущен в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команду: db.getSiblingDB (‘admin’). RunCommand ({listDatabases: 1}) 02.DB.LISTDATABASES
Ссылка http://docs.mongodb.org/manual/reference/command/listDatabases/

listDatabases

команда COPYDB
параметры
1
2
3
4
5
6
7
8
9
{
    fromhost: <hostname>,
    fromdb: <database>,
    todb: <database>,
    slaveOk: <true|false>,
    username: <username>,
    nonce: <nonce>,
    key: <key>
}
обертка db.copyDatabase (<fromdb>, <todb>, <fromhost>, <username>, <password>)
Описание Копирует базу данных с удаленного хоста на текущий хост или копирует базу данных в другую базу данных на текущем хосте. Он должен быть запущен в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команду:

1
2
3
4
5
db.getSiblingDB('admin').runCommand( {
    copydb: 1,
    fromdb: 'test',
    todb: 'test2'
} )

02.DB.COPYDB

В качестве альтернативы, давайте запустим ту же команду, используя оболочку оболочки MongoDB : db.copyDatabase (‘test’, ‘test2’)

02.DB.COPYDATABASE
Последовательный запуск show dbs выводит новую базу данных test2 в список после каждого запуска команды.

Ссылка http://docs.mongodb.org/manual/reference/command/copydb/

http://docs.mongodb.org/manual/reference/method/db.copyDatabase/

COPYDB

команда dropDatabase
обертка db.dropDatabase ()
Описание Удаляет текущую базу данных. Она должна быть запущена в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команды:

    • использовать test2
    • db.dropDatabase ()

02.DB.DROPDATABASE
В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

  • использовать test2
  • db.runCommand ({dropDatabase: 1})

Или даже самая короткая версия: db.getSiblingDB (‘test2’) .dropDatabase ()

Ссылка http://docs.mongodb.org/manual/reference/command/dropDatabase/

http://docs.mongodb.org/manual/reference/method/db.dropDatabase/

dropDatabase

команда клон
обертка db.cloneDatabase (<имя хоста> [: <порт>])
Описание Эта команда клонирует базу данных с тем же именем, что и текущая база данных, из удаленного экземпляра MongoDB, запущенного на <hostname> andport <port>, на текущий хост.
пример Предположим, что в другом экземпляре сервера MongoDB, работающем на порту 27018 , давайте выполним команду в оболочке: db.cloneDatabase (‘localhost: 27018’) 02.DB.CLONEDATABASE

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({clone: ​​’localhost: 27018′})

Ссылка http://docs.mongodb.org/manual/reference/command/clone/

http://docs.mongodb.org/manual/reference/method/db.cloneDatabase/

клон

команда repairDatabase
параметры
1
2
3
4
{
    preserveClonedFilesOnFailure: <true|false>,
    backupOriginalFiles: <true|false>
}
обертка db.repairDatabase ()
Описание Проверяет и исправляет любые ошибки и несоответствия с хранилищем данных текущей базы данных.
пример В оболочке MongoDB давайте выполним команду: db.repairDatabase ()

02.DB.REPAIRDATABASE

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({repairDatabase: 1})

Ссылка http://docs.mongodb.org/manual/reference/command/repairDatabase/

http://docs.mongodb.org/manual/reference/method/db.repairDatabase/

repairDatabase

команда FSYNC
параметры
1
2
3
4
{
    async: <true|false>,
    lock: <true|false>
}
обертка db.fsyncLock () / db.fsyncUnlock ()
Описание Сбрасывает все ожидающие записи со слоя хранения на диск. При желании он может заблокировать экземпляр сервера и заблокировать операции записи для сбора резервных копий. Его следует запускать в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команды:

  • db.fsyncLock ()
  • db.fsyncUnlock ()

02.DB.FSYNCLOCK

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

  • db.adminCommand ({fsync: 1, lock: true})
  • db.fsyncUnlock ()
Ссылка http://docs.mongodb.org/manual/reference/command/fsync/

http://docs.mongodb.org/manual/reference/method/db.fsyncLock/

http://docs.mongodb.org/manual/reference/method/db.fsyncUnlock/

FSYNC

команда dbStats
параметры
1
2
3
{
    scale: <scale>
}
обертка db.stats (<scale>)
Описание Выводит статистику хранения для данной базы данных.
пример В оболочке MongoDB давайте выполним команду: db.stats ()

02.DB.STATS

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({dbStats: 1})

Ссылка http://docs.mongodb.org/manual/reference/command/dbStats/

http://docs.mongodb.org/manual/reference/method/db.stats/

dbStats

4. Коллекции

Коллекции — это контейнеры документов MongoDB, которые имеют один или несколько индексов. Для пользователей, знакомых с понятиями СУБД, коллекция является эквивалентом таблицы. Коллекция принадлежит одной базе данных и не применяет никакой схемы, содержащей документы. Не существует ограничения на количество документов, которое может содержать любая отдельная коллекция, если это не особый тип коллекции, называемый закрытой коллекцией: коллекция фиксированного размера, которая автоматически перезаписывает свои самые старые записи, когда достигает максимального размера.

Вместе с именем базы данных коллекции образуют пространство имен: имя базы данных объединяется с именем коллекции с использованием точки ‘ . ‘персонаж, например:

  • test.collection1
  • test.collection1.subcollection1

В дополнение к пользовательским коллекциям MongoDB хранит системную информацию в коллекциях, которые используют пространство имен <database> .system. * И зарезервированы для внутреннего использования. База данных администратора (см. Раздел « Базы данных ») включает в себя следующие системные коллекции:

  • admin.system.roles
  • admin.system.users
  • admin.system.version

В каждой базе данных пользователей определены следующие системные коллекции:

  • <База данных> .system.namespaces
  • <База данных> .system.indexes
  • <база> .system.profile
  • <База данных> .system.js

В этом разделе мы не будем изучать системные коллекции напрямую, но если вы заинтересованы в получении более подробной информации, пожалуйста, обратитесь к официальной документации .

команда дб. <коллекция> .help ()
Описание Показать справку о методах сбора. <Collection> может быть именем существующей коллекции или несуществующей коллекции.
пример В оболочке MongoDB давайте выполним команду: db.mycoll.help ()

02.DB.COLLECTION.HELP

Примечание. Отображается только фрагмент выходных данных.

дб. <коллекция> .help ()

команда db.getCollectionNames ()
Описание Возвращает все коллекции в текущей базе данных.
пример В оболочке MongoDB давайте выполним команду: db.getCollectionNames ()

02.DB.GETCOLLECTIONNAMES

Ссылка http://docs.mongodb.org/manual/reference/method/db.getCollectionNames/

db.getCollectionNames ()

команда db.getCollection (<имя>)
Описание Возвращает имя коллекции. Это полезно для коллекции, имя которой может взаимодействовать с самой оболочкой (например, начинается с _ или имеет то же имя, что и встроенная команда базы данных).
пример В оболочке MongoDB давайте выполним команду: db.getCollection (‘system.indexes’)

02.DB.GETCOLLECTION

Ссылка http://docs.mongodb.org/manual/reference/method/db.getCollection/

db.getCollection (<имя>)

команда Создайте
параметры
1
2
3
4
5
6
7
8
{
    create: <collection>,
    capped: <true|false>,
    autoIndexId: <true|false>,
    size: <max_size>,
    max: <max_documents>,
    flags: <0|1>
}
обертка db.createCollection (<collection>, {capped: <true | false>, autoIndexId: <true | false>, размер: <число>, макс: <число>})
Описание Явно создает новую коллекцию <collection> .
пример В оболочке MongoDB давайте выполним команду: db.createCollection (‘mycoll’, {capped: false})

02.DB.CREATECOLLECTION

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({create: ‘mycoll’, capped: false})

Последовательный вызов db.getCollectionNames () выводит вновь созданные коллекции.

Ссылка http://docs.mongodb.org/manual/reference/command/create/

http://docs.mongodb.org/manual/reference/method/db.createCollection/

Создайте

команда падение
параметры
1
2
3
{
    drop: <collection>
}
обертка дб. <коллекция> .drop ()
Описание Удаляет указанную коллекцию <collection> из базы данных.
пример В оболочке MongoDB давайте выполним команды:

  • db.createCollection (‘mycoll’)
  • db.mycoll.drop ()

02.DB.COLLECTION.DROP

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({drop: ‘mycoll’})

Ссылка http://docs.mongodb.org/manual/reference/command/drop/

http://docs.mongodb.org/manual/reference/method/db.collection.drop/

падение

команда renameCollection
параметры
1
2
3
4
5
{
    renameCollection: <source_namespace>,
    to: <target_namespace>,
    dropTarget: <true|false>
}
обертка дб. <коллекция>. renameCollection (<target>, <dropTarget>)
Описание Изменяет имя существующей коллекции <collection>. Она должна быть запущена в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команды:

  • db.createCollection (‘mycoll’)
  • db.mycoll.renameCollection (‘mycoll2’)

02.DB.COLLECTION.RENAMECOLLECTION

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.adminCommand ({renameCollection: ‘test.mycoll’, to: ‘test.mycoll2’})

Ссылка http://docs.mongodb.org/manual/reference/command/renameCollection/

http://docs.mongodb.org/manual/reference/method/db.collection.renameCollection/

renameCollection

команда Validate
параметры
1
2
3
4
{
    validate: <collection>,
    full: <true|false>
}
обертка БД. <collection> .validate (<full>)
Описание Проверяет правильность структур в коллекции <collection> путем сканирования данных и индексов коллекции. Команда возвращает информацию о представлении коллекции на диске.
пример В оболочке MongoDB давайте выполним команды:

  • db.createCollection (‘mycoll’)
  • db.mycoll.validate ()

02.DB.COLLECTION.VALIDATE

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({validate: ‘mycoll’})

Ссылка http://docs.mongodb.org/manual/reference/command/validate/

http://docs.mongodb.org/manual/reference/method/db.collection.validate/

Validate

команда cloneCollection
параметры
1
2
3
4
5
{
    cloneCollection: <namespace>,
    from: <hostname>,
    query: { <query> }
}
обертка db.cloneCollection (<from>, <collection>, <query>)
Описание Копирует коллекцию <collection> с удаленного хоста на текущий хост.
пример Предположим, что в другом экземпляре сервера MongoDB, работающем через порт 27018 , давайте выполним команду в оболочке: db.cloneCollection (‘localhost: 27018’, ‘test.mycoll’)

02.DB.CLONECOLLECTION

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({cloneCollection: ‘test.mycoll’, from: ‘localhost: 27018’})

Ссылка http://docs.mongodb.org/manual/reference/command/cloneCollection/

http://docs.mongodb.org/manual/reference/method/db.cloneCollection/

cloneCollection

команда cloneCollectionAsCapped
параметры
1
2
3
4
5
{
    cloneCollectionAsCapped: <existing collection>,
    toCollection: <capped collection>,
    size: <capped size>
}
Описание Создает новую ограниченную коллекцию <capped collection> из существующей <существующей коллекции> незаполненной коллекции в той же базе данных. Операция не влияет на исходную коллекцию без ограничения.
пример В оболочке MongoDB давайте выполним команды:

1
db.createCollection( 'mycoll' )
1
2
3
4
5
db.runCommand( {
    cloneCollectionAsCapped: 'mycoll',
    toCollection: 'mycollcapped',
    size: 10
} )

02.DB.CLONECOLLECTIONASCAPPED

Ссылка http://docs.mongodb.org/manual/reference/command/cloneCollectionAsCapped/

cloneCollectionAsCapped

команда convertToCapped
параметры
1
2
3
4
{
    convertToCapped: <collection>,
    size: <capped size>
}
Описание Преобразует существующую коллекцию без ограничения <collection> в коллекцию с ограничением в той же базе данных.
пример В оболочке MongoDB давайте выполним команды:

1
db.createCollection( 'mycoll' )
1
2
3
4
db.runCommand( {
    convertToCapped: 'mycoll',
    size: 10
} )

02.DB.CONVERTTOCAPPED

Ссылка http://docs.mongodb.org/manual/reference/command/convertToCapped/

convertToCapped

команда collStats
параметры
1
2
3
4
{
    collStats: <collection>,
    scale : <scale>
}
обертка
1
2
3
4
5
db.<collection>.stats(<scale>)
db. <collection>.totalSize()
db. <collection>.dataSize()
db. <collection>.totalIndexSize()
db. <collection>.storageSize()
Описание Возвращает различную статистику хранения для данной коллекции <collection> .
пример В оболочке MongoDB давайте выполним команду: db.mycoll.stats ()

02.DB.COLLECTION.STATS

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({collStats: ‘mycoll’})

Ссылка http://docs.mongodb.org/manual/reference/command/collStats/

http://docs.mongodb.org/manual/reference/method/db.collection.stats/

http://docs.mongodb.org/manual/reference/method/db.collection.totalSize/

http://docs.mongodb.org/manual/reference/method/db.collection.dataSize/

http://docs.mongodb.org/manual/reference/method/db.collection.totalIndexSize/

http://docs.mongodb.org/manual/reference/method/db.collection.storageSize/

http://docs.mongodb.org/manual/reference/method/db.printCollectionStats/

db.printCollectionStats ()

команда createIndexes
параметры
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
{
    createIndexes: <collection>,
    indexes: [
        {
            key: {
                <key-value_pair>,
                <key-value_pair>,
                ...
            },
            name: <index_name>,
            <option1>,
            <option2>,
            ...
        },
        { ... },
        { ... }
    ]
}
обертка дб. <коллекция>. sureIndex (<ключи>, <параметры>)
Описание Создает один или несколько индексов для коллекции <collection> .
пример В оболочке MongoDB давайте выполним команду: db.mycoll.ensureIndex ({content: «text»})

02.DB.COLLECTION.ENSUREINDEX

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

1
2
3
4
5
6
7
8
9
db.runCommand( {
    createIndexes: 'mycoll',
    indexes: [
        {
            key: { content: 'text' },
            name: 'myindex'
        }
    ]
} )
Ссылка http://docs.mongodb.org/manual/reference/command/createIndexes/

http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/

createIndexes

команда dropIndexes
параметры
1
2
3
4
{
    dropIndexes: <collection>,
    index: <index>
}
обертка дб. <коллекция> .dropIndexes ()

дб. <коллекция> .dropIndex (<индекс>)

Описание Удаляет один или все индексы из коллекции <collection> . Чтобы удалить все индексы, передайте ‘*’ в качестве значения <index> .
пример В оболочке MongoDB давайте выполним команды:

1
db.mycoll.ensureIndex( { content: "text" } )
1
db.mycoll.dropIndexes()

02.DB.COLLECTION.DROPINDEXES

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({dropIndexes: ‘mycoll’, index: ‘*’})

Ссылка http://docs.mongodb.org/manual/reference/command/dropIndexes/

http://docs.mongodb.org/manual/reference/method/db.collection.dropIndexes/

http://docs.mongodb.org/manual/reference/method/db.collection.dropIndex/

dropIndexes

команда переиндексации
параметры
1
2
3
{
    reIndex: <collection>
}
обертка дб. <коллекция> .reIndex ()
Описание Удаляет все индексы в коллекции <collection> и создает их заново. Эта операция может быть дорогой для коллекций, которые имеют большой объем данных и / или большое количество индексов.
пример В оболочке MongoDB давайте выполним команду: db.mycoll.reIndex ()

02.DB.COLLECTION.REINDEX

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({reIndex: ‘mycoll’})

Ссылка http://docs.mongodb.org/manual/reference/command/reIndex/

http://docs.mongodb.org/manual/reference/method/db.collection.reIndex/

переиндексации

команда компактный
параметры
1
2
3
{
    compact: <collection>
}
Описание Перезаписывает и дефрагментирует все данные в коллекции <collection> , а также все индексы в этой коллекции.
пример В оболочке MongoDB давайте выполним команду: db.runCommand ({compact: ‘mycoll’})

02.DB.COMPACT

Ссылка http://docs.mongodb.org/manual/reference/command/compact/

компактный

команда collMod
параметры
1
2
3
4
{
    collMod: <collection> ,
    <flag> : <value>
}
Описание Позволяет добавлять флаги в коллекцию <collection> для изменения ее поведения.
пример В оболочке MongoDB давайте выполним команду : db.runCommand ({collMod: ‘mycoll’, usePowerOf2Sizes: true})

02.DB.COLLMOD

Ссылка http://docs.mongodb.org/manual/reference/command/collMod/

collMod

команда дб. <коллекция> .isCapped ()
Описание Возвращает true, если коллекция <collection> является закрытой коллекцией, в противном случае возвращает false.
пример В оболочке MongoDB давайте выполним команду : db.mycoll.isCapped ()

02.DB.COLLECTION.ISCAPPED

Ссылка http://docs.mongodb.org/manual/reference/method/db.collection.isCapped/

db.isCapped

команда дб. <коллекция> .copyTo (<newCollection>)
Описание Копирует все документы из коллекции <collection> в новую коллекцию <newCollection>, используя серверный JavaScript. Если коллекция <newCollection> не существует, она будет создана. Команда возвращает количество скопированных документов (или 0, если исходная коллекция пуста).
пример В оболочке MongoDB давайте выполним команды :

1
db.createCollection( 'mycoll' )
1
db.mycoll.copyTo( 'mycollcopy' )

02.DB.COLLECTION.COPYTO

Ссылка http://docs.mongodb.org/manual/reference/method/db.collection.copyTo/

db.copyTo

5. Документы

В MongoDB данные представляются и хранятся в виде документов JSON : пары полей и значений. Точнее, MongoDB использует двоичный JSON (BSON) для хранения сериализованных документов на диске, но для пользователя он выглядит как обычный JSON (по крайней мере, в оболочке MongoDB ). Диапазон поддерживаемых типов полевых данных довольно внушителен (см. Ссылку на типы данных BSON ):

  • двойной
  • строка
  • объект
  • массив
  • Двоичные данные
  • Неопределенный
  • Идентификатор объекта
  • логический
  • Дата
  • Ноль
  • Регулярное выражение
  • JavaScript (с / без области)
  • 32-разрядное целое число
  • 64-разрядное целое число
  • Отметка

Другие документы (так называемые встроенные документы), массивы, массивы документов и ссылок также поддерживаются.

Имена полей имеют несколько ограничений:

  • Поле с именем _id зарезервировано для использования в качестве первичного ключа и должно быть уникальным для всей коллекции (оно является неизменным и может иметь любой тип, отличный от массива). Это поле всегда является первым полем в документе.
  • Имена полей не могут начинаться со знака доллара ‘$’ и не могут содержать точку ‘.’ характер. Те защищены.

Например, простой документ, представляющий книгу, может выглядеть так:

1
2
3
4
5
6
7
8
{
    "_id": ObjectId("536a5fe20ad33fcab3abfc0e"),
    "title": "MongoDB In Action",
    "author": { "firstName": "Kyle", "lastName": "Banker" },
    "isbn": "978-1935182870",
    "published": new Date("Dec 16, 2011" ),
    "categories": [ "NoSQL", "Document Databases" ]
}

Ссылки ( DBRef ) — это указатели из одного документа в другой (с использованием значения поля _id документа, имени коллекции и, необязательно, имени базы данных):

1
2
3
4
5
{
    "$ref" : <collection>,
    "$id" : <document _id>,
    "$db" : <database>
}

Для пользователей, знакомых с концепциями СУБД, он может выглядеть аналогично внешним ключам и объединениям, но MongoDB не поддерживает объединения: для разрешения ссылки должен быть выполнен дополнительный запрос (или запросы). Тем не менее, это довольно полезная концепция для представления ссылок между документами. Возвращаясь к нашему примеру с Книгой , давайте предположим, что авторы хранятся в отдельной коллекции, и каждая книга будет иметь ссылку на своего автора. Вот пример документа Author :

1
2
3
4
5
{
    "_id": ObjectId("536a60ef0ad33fcab3abfc0f"),
    "firstName": "Kyle",
    "lastName": "Banker"
}

И теперь каждая книга ссылается на автора по полю _id и типу DBRef :

1
2
3
4
5
6
7
8
{
    "_id": ObjectId("536a5fe20ad33fcab3abfc0e"),
    "title": "MongoDB In Action",
    "author": DBRef( "authors", "536a60ef0ad33fcab3abfc0f" ),
    "isbn": "978-1935182870",
    "published": new Date("Dec 16, 2011" ),
    "categories": [ "NoSQL", "Document Databases" ]
}

Позже в этом разделе мы увидим больше примеров вставки различных документов и использования ссылок на документы.

Следует помнить, что максимальный размер документа (представленного в формате BSON ) составляет 16 мегабайт . Для более полного обзора модели данных документа, пожалуйста, обратитесь к официальной документации .

команда вставка
параметры
1
2
3
4
5
6
{
  insert: <collection>,
  documents: [ <document>, <document>, <document>, ... ],
  ordered: <true|false>,
  writeConcern: { <write concern> }
}
обертка db. <collection> .insert (<документ или массив документов>, {writeConcern: {…}, упорядочено: <true | false>})

db. <collection> .save (<document>, writeConcern: {…})

Описание Вставляет один или несколько документов в коллекцию <collection> и возвращает документ, содержащий статус всех вставок.
пример В оболочке MongoDB давайте выполним команду :

1
2
3
4
5
6
7
db.books.insert( {
  "title": "MongoDB In Action",
  "author": { "firstName": "Kyle", "lastName": "Banker" },
  "isbn": "978-1935182870",
  "published": new Date("Dec 16, 2011" ),
  "categories": [ "NoSQL", "Document Databases" ]
} )

02.DB.COLLECTION.INSERT

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

01
02
03
04
05
06
07
08
09
10
11
12
db.runCommand( {
  insert: 'books',
  documents: [
      {
        "title": "MongoDB In Action",
        "author": { "firstName": "Kyle", "lastName": "Banker" },
        "isbn": "978-1935182870",
        "published": new Date("Dec 16, 2011" ),
        "categories": [ "NoSQL", "Document Databases" ]
      }
  ]
} )

Рассматривая пример со ссылкой из Book на ее Author , давайте выполним следующие команды в оболочке MongoDB :

1
2
3
4
5
db.authors.insert( {
    "_id": "kyle-banker",
    "firstName": "Kyle",
    "lastName": "Banker"
} )
1
2
3
4
5
6
7
db.books.insert( {
    "title": "MongoDB In Action",
    "author": { "$ref": "authors", "$id": "kyle-banker" },
    "isbn": "978-1935182870",
    "published": new Date("Dec 16, 2011" ),
    "categories": [ "NoSQL", "Document Databases" ]
} )

02.DB.COLLECTION.INSERT.DBREF

Ссылка http://docs.mongodb.org/manual/reference/command/insert/

http://docs.mongodb.org/manual/reference/method/db.collection.insert/

http://docs.mongodb.org/manual/reference/method/db.collection.save/

вставка

Команды записи / обновления имеют понятие проблемы записи : гарантия, которую MongoDB предоставляет, сообщая об успешности операции записи. Сила записи проблем определяет уровень гарантии. Когда вставки, обновления и удаления имеют слабую запись, операции записи быстро возвращаются. Следовательно, при наличии серьезных проблем с записью клиенты могут ожидать экземпляры сервера MongoDB для подтверждения операций записи. В некоторых случаях сбоя операции записи, выполненные со слабой записью, могут не сохраняться. Мы вернемся к написанию проблемы в части 5. Руководство по репликации MongoDB, но если вы хотите получить более подробную информацию прямо сейчас, обратитесь к официальной документации .

команда Обновить
параметры
01
02
03
04
05
06
07
08
09
10
11
12
13
14
{
  update: <collection>,
  updates: [
    { q: <query>, u: <update>, upsert: <true|false>,
multi: <true|false> },
    { q: <query>, u: <update>, upsert: <true|false>,
multi: <true|false> },
    { q: <query>, u: <update>, upsert: <true|false>,
multi: <true|false> },
    ...
  ],
  ordered: <true|false>,
  writeConcern: { <write concern> }
}
обертка db. <collection> .update (<query>, <update>, {upsert: <true | false>, multi: <true | false>, writeConcern: {…}})

db. <collection> .save (<document>, writeConcern: {…})

Описание Изменяет существующий документ или документы в коллекции <collection> или вставляет новый, если ни один документ не соответствует запросу и для параметра upsert установлено значение true . Команда может изменить определенные поля существующего документа или документов или полностью заменить существующий документ, в зависимости от обновления.

По умолчанию команда обновляет один документ, если параметр multi не имеет значения true, а затем будет выполнено обновление всех документов, соответствующих критериям запроса.

Синтаксис запроса будет подробно обсуждаться в разделе « Запросы ».

пример В оболочке MongoDB , давайте выполним команду (исходный документ будет заменен, если существует) :

1
2
3
4
5
6
7
8
db.books.update(
    { "title": "MongoDB In Action" },
    {
        "rating": 5,
        "categories": [ "NoSQL", "Document Databases""MongoDB" ]
    },
    { upsert: true }
)

02.DB.COLLECTION.UPDATE

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

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

01
02
03
04
05
06
07
08
09
10
11
12
13
db.runCommand( {
  "update": "books",
  "updates": [
    {
      "q": { "title": "MongoDB In Action" },
      "u": {
        "rating": 5,
        "categories": [ "NoSQL", "Document Databases""MongoDB" ]
      },
      upsert: true
    }
  ]
} )
Ссылка http://docs.mongodb.org/manual/reference/command/update/

http://docs.mongodb.org/manual/reference/method/db.collection.update/

http://docs.mongodb.org/manual/reference/method/db.collection.save/

Обновить

Команда update поддерживает множество операторов для управления семантикой модификации, которые перечислены в таблице ниже (более подробную информацию см. В официальной документации ):

оператор Описание
$ вкл Увеличивает значение поля на указанную сумму.
$ мул Умножает значение поля на указанную сумму.
$ переименовани Переименовывает поле.
$ setOnInsert Устанавливает значение поля при создании документа во время upsert . Не влияет на операции обновления, которые изменяют существующие документы.
$ комплект Устанавливает значение поля в существующем документе.
$ снята с охраны Удаляет указанное поле из существующего документа.
$ мин Обновляется только в том случае, если существующее значение поля меньше указанного значения.
$ макс Обновляется только в том случае, если существующее значение поля больше указанного значения.
$ CurrentDate Устанавливает значение поля в текущую дату в виде даты или отметки времени.
$ Действует как заполнитель для обновления первого элемента, который соответствует условию запроса в обновлении.
$ addToSet Добавляет элементы в существующий массив, только если они еще не существуют в наборе.
$ поп Удаляет первый или последний элемент массива.
$ pullAll Удаляет все совпадающие значения из массива.
$ тянуть Удаляет все элементы массива, которые соответствуют указанному запросу.
$ толчок Добавляет элемент в массив.
$ каждый Изменяет операторы $ push и $ addToSet для добавления нескольких элементов для обновления массива.
$ ломтика Изменяет оператор $ push для ограничения размера обновляемых массивов.
$ сортировать Изменяет оператор $ push для изменения порядка документов, хранящихся в массиве.
$ позиция Изменяет оператор $ push, чтобы указать позицию в массиве для добавления элементов.
$ бит Выполняет побитовые И , ИЛИ , и XOR обновления целочисленных значений.
$ изолированные Изменяет поведение мульти-обновлений для улучшения изоляции операции.

Обновить

Вот пример обновления с использованием некоторых операторов из таблицы выше:

1
2
3
4
5
6
7
db.books.update(
    { "title": "MongoDB In Action" },
    {
        "$inc": { "rating": 1 },
        "$addToSet": { "categories": "MongoDB" }
    }
)
команда Удалить
параметры
01
02
03
04
05
06
07
08
09
10
11
{
    delete: <collection>,
    deletes: [
         { q : <query>, limit : <integer> },
         { q : <query>, limit : <integer> },
         { q : <query>, limit : <integer> },
         ...
   ],
   ordered: <true|false>,
   writeConcern: { <write concern> }
}
обертка db. <collection> .remove (<query>, {justOne: <true | false>, writeConcern: {…}})
Описание Удаляет документы из коллекции <collection> . Может быть предоставлено несколько спецификаций удаления. Команда не может работать с ограниченными коллекциями.

Синтаксис запроса будет подробно обсуждаться в разделе « Запросы ».

пример В оболочке MongoDB давайте выполним команду :

1
2
3
4
db.books.remove(
    { "title": "MongoDB In Action" },
    { "justOne": true }
)

02.DB.COLLECTION.REMOVE

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

1
2
3
4
5
6
7
8
9
db.runCommand( {
    "delete": "books",
    "deletes": [
        {
            "q": { "title": "MongoDB In Action" },
            "limit": 1
        }
    ]
} )
Ссылка http://docs.mongodb.org/manual/reference/command/delete/

http://docs.mongodb.org/manual/reference/method/db.collection.remove/

удалять

команда findAndModify
параметры
01
02
03
04
05
06
07
08
09
10
{
    findAndModify: <collection>,
    query: <query>,
    sort: <sort>,
    remove: <true|false>,
    update: <update>,
    new: <true|false>,
    fields: <fields>,
    upsert: <true|false>,
}
обертка дб. <коллекция>. findAndModify ({query: <query>, sort: <sort>, remove: <true | false>, update: <update>, new: <true | false>, поля: <fields>, upsert: <true | false> })
Описание Находит, изменяет и возвращает один документ в коллекции <collection> . По умолчанию возвращенный документ не содержит изменений, внесенных обновлением. Чтобы вернуть документ с внесенными изменениями, для новой опции должно быть установлено значение true . Если запрос выбирает несколько документов, параметр сортировки определяет, какой документ следует изменить.
пример В оболочке MongoDB давайте выполним команды (обратите внимание, что оригинальный документ будет заменен обновленным):

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
db.books.insert( {
    "title": "MongoDB In Action",
    "author": { firstName: "Kyle", lastName: "Banker" },
    "isbn": "978-1935182870",
    "published": new Date("Dec 16, 2011" ),
    "categories": [ "NoSQL", "Document Databases" ]
} )
 
db.books.findAndModify( {
    "query": { "title": "MongoDB In Action" },
    "remove": false,
    "new": true,
    "update": {
        "rating": 5,
        "categories": [ "NoSQL", "Document Databases""MongoDB" ]
    }
} )

02.DB.COLLECTION.FINDANDMODIFY

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

01
02
03
04
05
06
07
08
09
10
db.runCommand( {
    "findAndModify": "books",
    "query": { "title": "MongoDB In Action" },
    "update": {
        "rating": 5,
        "categories": [ "NoSQL", "Document Databases""MongoDB" ]
    },
    "remove": false,
    "new": true
} )
Ссылка http://docs.mongodb.org/manual/reference/command/findAndModify/

http://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/

findAndModify

В последнем выпуске MongoDB представлена ​​поддержка массовых операций, которая наряду с индексацией будет рассмотрена в части 7. Руководство по безопасности, профилированию, индексированию, курсорам и массовым операциям MongoDB .

6. Запросы

Запросы используются для извлечения данных, хранящихся в базе данных MongoDB . В MongoDB запросы выбирают документы только из одной коллекции (как мы уже знаем, объединения не поддерживаются). Запросы определяют критерии для сопоставления документов. Запрос может включать проекцию для выбора полей из соответствующих документов для возврата (весьма полезно для ограничения объема данных, которые следует отправлять по сети).

команда db. <collection> .find (<критерии>, <проекция>)
Описание Выбирает документы в коллекции <collection> и возвращает курсор на выбранные документы. Курсоры будут рассмотрены в части 7. Руководство по безопасности, профилированию, индексированию, курсорам и массовым операциям MongoDB .

MongoDB поддерживает богатый набор операторов запросов (более подробную информацию см. В официальной документации ):

  • $ GT
  • $ GTE
  • $ в
  • $ л
  • $ Ге
  • $ пе
  • $ нин
  • $ или
  • $ и
  • не $
  • $ ни
  • $ существует
  • $ Тип
  • $ мод
  • $ регулярное выражение
  • $ текст
  • $ , где
  • $ geoWithin
  • $ geoIntersects
  • $ рядом
  • $ nearSphere
  • $ все
  • $ elemMatch
  • $ размер
  • $ elemMatch
  • $ мета-
  • $ ломтика

Параметр <projection> указывает, какие поля документа должны быть выбраны и возвращены клиентам:

1
2
3
4
5
{
    field1: <true|false>,
    field2: <true|false>
    ...
}
пример В оболочке MongoDB давайте выполним команды:

  • db.books.insert ( { «title» : «MongoDB в действии»} )
  • db.books.insert ( { «title» : «MongoDB. Полное руководство»} )
  • db.books.find ( { «title» : { «$ regex» : «MongoDB *»}} )

02.DB.COLLECTION.FIND

Ссылка http://docs.mongodb.org/manual/reference/method/db.collection.find/

db.find

команда db. <collection> .findOne (<критерии>, <проекция>)
Описание Возвращает только один документ из коллекции <collection>, который удовлетворяет заданным критериям запроса. Если несколько документов соответствуют запросу, этот метод возвращает первый документ в соответствии с естественным порядком, который отражает порядок документов на диске. В ограниченных коллекциях естественный порядок такой же, как порядок вставки. Эта команда очень похожа на описанную выше db. <Collection> .find (<критерии>, <проекция>), но ограничивает результат не более чем одним документом.
пример В оболочке MongoDB давайте выполним команды:

  • db.books.insert ( { «title» : «MongoDB в действии», «цена» : 10} )
  • db.books.insert ( { «title» : «MongoDB. Полное руководство», «цена» : 15} )
  • db.books.findOne ( { «цена» : { «$ gt» : 10}}, { «название» : 1, «_id» : 0} )

02.DB.COLLECTION.FINDONE

Ссылка http://docs.mongodb.org/manual/reference/method/db.collection.findOne/

db.findOne

В последней версии MongoDB позволяет ограничить время обработки запроса с помощью опции maxTimeMS (миллисекунды). Обратите внимание, что maxTimeMS учитывает только процессорное время и не включает задержку в сети или время простоя.

db.books.find ({ «title» : { «$ regex» : «MongoDB»} } ) . maxTimeMS (500)

команда geoNear
параметры
01
02
03
04
05
06
07
08
09
10
11
12
{
    geoNear: <collection>,
    near: <point>,
    limit: <limit>,
    num: <num>,
    maxDistance: <distance>,
    query: <query>,
    spherical: <true|false>,
    distanceMultiplier: <multiplier>,
    includeLocs: <true|false>,
    uniqueDocs: <true|false>
}
Описание Определяет точку, для которой геопространственный запрос сначала возвращает ближайшие документы из <collection> . Запрос возвращает документы от ближайшего к дальнему. Это альтернатива оператору запроса $ near . Мы подробно рассмотрим гео-индексы в части 7. Руководство по безопасности, профилированию, индексированию, курсорам и массовым операциям MongoDB .
пример В оболочке MongoDB давайте выполним команды:

1
db.stores.insert( { "name": "BestBuy", "location": [ 10, 15 ] } )
1
db.stores.ensureIndex( { "location": "2d" } )
1
2
3
4
5
db.runCommand( {
    "geoNear": "stores",
    "near": [ 10, 14 ],
    "maxDistance": 6
} )    

02.DB.GEONEAR

Ссылка http://docs.mongodb.org/manual/reference/command/geoNear/

geoNear

команда Геопоиск
параметры
1
2
3
4
5
6
7
{
    geoSearch : <collection>,
    near: <point>,
    maxDistance: <distance>,
    search: <query>,
    limit: <limit>
}
Описание Возвращает документы из коллекции <collection> на основе координат местоположения после сбора результатов на основе какого-либо другого запроса.
пример В оболочке MongoDB давайте выполним команды:

1
db.stores.insert( { "name": "BestBuy", "location": [ 10, 15 ] } )
1
2
3
4
db.stores.ensureIndex(
    { "location": "geoHaystack", "name": 1 },
    { "bucketSize": 1 }
)
1
2
3
4
5
6
db.runCommand( {
    "geoSearch": "stores",
    "near": [ 10, 14 ],
    "maxDistance": 6,
    "search": { "name": "BestBuy" }
} )

02.DB.GEOSEARCH

Ссылка http://docs.mongodb.org/manual/reference/command/geoSearch/

Геопоиск

В части 7. Руководстве по безопасности, профилированию, индексированию, курсорам и массовым операциям MongoDB мы рассмотрим некоторые дополнительные темы, связанные с курсорами, профилированием запросов и планами запросов.

7. Агрегации

MongoDB предоставляет семейство команд для выполнения операций агрегации во всей коллекции (так называемая структура агрегации ). Большинство команд, которые мы собираемся охватить в этом разделе, кроме mapReduce , который будет описан в части 6. Учебник по MongoDB Map Reduce .

команда подсчитывать
параметры
1
2
3
4
5
6
7
{
    count: <collection>,
    query: <query>,
    limit: <limit>,
    skip: <skip>,
    hint: <hint>
}
обертка дб. <коллекция> .count (<запрос>)
Описание Подсчитывает количество документов в коллекции <collection> . Синтаксис запроса подробно обсуждается в разделе « Запросы ».
пример В оболочке MongoDB давайте выполним команду : db.mycoll.count ()

02.DB.COLLECTION.COUNT

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ( {

« Count» : «mycoll» })

Ссылка http://docs.mongodb.org/manual/reference/command/count/

http://docs.mongodb.org/manual/reference/method/db.collection.count/

подсчитывать

команда отчетливый
параметры
1
2
3
4
5
{
    distinct: <collection>,
    key: <field>,
    query: <query>
}
обертка db.collection.distinct (<field>, <query>)
Описание Находит отдельные значения для указанного ключа <field> в одной коллекции <collection> . Синтаксис запроса подробно обсуждается в разделе « Запросы ».
пример В оболочке MongoDB давайте выполним команды :

1
db.books.insert( { "title": "MongoDB In Action" } )
1
db.books.insert( { "title": "MongoDB. The Definitive Guide" } )
1
db.books.distinct("title" )

02.DB.COLLECTION.DISTINCT

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ( {

«Отличный »: «книги», « ключ »: «название» })

Ссылка http://docs.mongodb.org/manual/reference/command/distinct/

http://docs.mongodb.org/manual/reference/method/db.collection.distinct/

отчетливый

команда группа
параметры
01
02
03
04
05
06
07
08
09
10
11
12
{
    group:
    {
         ns: <namespace>,
         key: <key>,
         $reduce: <reduce function>,
         Initial: <initial>,  
         $keyf: <key function>,
         cond: <query>,
         finalize: <finalize function>
   }
}
обертка db.collection.group ({ключ: <ключ>, уменьшить: <уменьшить функцию>, начальный: <начальный>, ключ: <ключевая функция>, cond: <запрос>, завершить: <завершить функцию>})
Описание Группирует документы в коллекции <collection> по указанному ключу <field> и выполняет простые функции агрегирования, такие как подсчет и суммирование. Для пользователей, знакомых с понятиями СУБД, эта команда аналогична инструкции SELECT <…> GROUP BY <…> в SQL . Синтаксис запроса подробно обсуждается в разделе « Запросы ».
пример В оболочке MongoDB давайте выполним команды :

1
db.books.insert( { "title": "MongoDB In Action" } )
1
db.books.insert( { "title": "MongoDB. The Definitive Guide" } )
1
2
3
4
5
6
db.books.group(
{
    "key": "title",
    "reduce": function ( curr, result ) { result.total += 1 },
    "initial": { "total": 0 }
} )

02.DB.COLLECTION.GROUP

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

1
2
3
4
5
6
7
8
db.runCommand( {
    "group": {
        "ns": "books",
        "key": "title",
        "$reduce": function ( curr, result ) { result.total += 1 },
        "initial": { "total": 0 }
    }
} )
Ссылка http://docs.mongodb.org/manual/reference/command/group/

http://docs.mongodb.org/manual/reference/method/db.collection.group/

группа

команда совокупный
параметры
1
2
3
4
5
6
7
{
    aggregate: <collection>,
    pipeline: [ <stage>, <...> ],
    explain: <true|false>,
    allowDiskUse: <true|false>,
    cursor: <cursor>
}
обертка db.collection.aggregate (<pipe>, {объяснение: <true | false>, allowDiskUse: <true | false>, курсор: <курсор>})
Описание Выполняет операцию агрегирования, используя конвейер агрегации <pipe> : обрабатывает данные из коллекции <collection> с помощью последовательности поэтапных манипуляций (более подробную информацию см. В официальной документации ).

Операторы агрегации трубопроводов включают в себя:

  • $ проект
  • $ матч
  • $ красноломкий
  • $ предел
  • $ пропуск
  • $ размотки
  • $ группа
  • $ сортировать
  • $ geoNear
  • $ из

Каждый оператор конвейера также поддерживает операторы выражений для вычисления значений внутри конвейера (более подробную информацию см. В официальной документации ).

пример В оболочке MongoDB давайте выполним команды :

1
db.books.insert( { "title": "MongoDB In Action", "price": 10 } )
1
2
db.books.insert( { "title": "MongoDB. The Definitive Guide",
"price": 15 } )
1
2
3
4
5
db.books.aggregate( [ 
{ "$match": { "title":  { "$regex": "MongoDB*" } } }, 
{ "$group": { "_id": "mongodb", "total": { "$sum": "$price" } } }, 
{ "$sort": { "total": -1 } }
])

02.DB.COLLECTION.AGGREGATE

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

1
2
3
4
5
6
7
8
db.runCommand( {
"aggregate""books",    
"pipeline": [
  { "$match": { "title":  { "$regex": "MongoDB*" } } }, 
  { "$group": { "_id": "mongodb", "total": { "$sum": "$price" } } },
  { "$sort": { "total": -1 } }
]
})
Ссылка http://docs.mongodb.org/manual/reference/command/aggregate/

http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/

совокупный

8. GridFS

GridFS позволяет хранить и извлекать файлы, размер которых превышает ограничение размера документа MongoDB 16 МБ (см. Раздел « Документы »). Вместо того чтобы хранить файл в одном документе, GridFS делит файл на части (или порции) и сохраняет каждый из этих порций как отдельный документ. По умолчанию размер фрагмента составляет 255 КБ . GridFS хранит файлы в двух коллекциях (префикс fs может быть изменен):

  • fs.chunks : сохраняет содержимое файла в виде двоичных фрагментов
  • fs.files : хранит метаданные файла

Для более подробной информации, пожалуйста, обратитесь к официальной документации .

команда filemd5
параметры
1
2
3
4
{
    filemd5: <object id>,
    root: <root>
}
Описание Возвращает хеши MD5 для одного файла, сохраненного с использованием спецификации GridFS .
пример В оболочке запустим команду: bin / mongofiles положить bin / mongofiles

gridfs1

В оболочке MongoDB давайте выполним команду:

1
2
3
4
db.runCommand( {
    "filemd5": ObjectId('536bbb3ffa052c2b649d2ee3'),
    "root": "fs"
} )

gridfs2

Ссылка http://docs.mongodb.org/manual/reference/command/filemd5/

filemd5

8. Сервер

Сервер MongoDB поддерживает широкий спектр команд для проверки своих внутренних функций и мониторинга текущей деятельности. Чтобы удовлетворить потребности корпоративных развертываний, MongoDB имеет мощную модель безопасности на основе ролей, которая обеспечивает пользователям и приложениям доступ только к тем данным, которые им разрешены. Будучи большой темой, она будет рассмотрена в части 7. Руководство по безопасности, профилированию, индексированию, курсорам и массовым операциям MongoDB .

команда Eval
параметры
1
2
3
4
5
{
    eval: <function>,
    args: [ <arg1>, <arg2> ... ],
    nolock: <true|false>
}
обертка db.eval (<функция>, <аргументы>)
Описание Предоставляет возможность оценивать функции JavaScript на сервере MongoDB .
пример В оболочке MongoDB давайте выполним команду:

1
2
3
4
5
6
db.eval(
    function(title) {
        return db.books.insert( { "title": title } ).nInserted == 1;
    },
    "MongoDB in Action"
)

02.DB.EVAL

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () :

1
2
3
4
5
6
db.runCommand( {
   "eval":  function(title) {
        return db.books.insert( { "title": title } ).nInserted == 1;
    },
    "args": [ "MongoDB in Action" ]
} )
Ссылка http://docs.mongodb.org/manual/reference/command/eval/

http://docs.mongodb.org/manual/reference/method/db.eval/

Eval

команда db.version ()
Описание Возвращает версию экземпляра сервера MongoDB .
пример В оболочке MongoDB давайте выполним команду: db.version ()

02.DB.VERSION

Ссылка http://docs.mongodb.org/manual/reference/method/db.version/

db.version ()

команда db.getMongo ()
Описание Возвращает текущее соединение с базой данных.
пример В оболочке MongoDB давайте выполним команду: db.getMongo ()

02.DB.GETMONGO

Ссылка http://docs.mongodb.org/manual/reference/method/db.getMongo/

db.getMongo ()

команда db.currentOp ()
Описание Сообщает о текущих текущих операциях для экземпляра базы данных MongoDB
пример В оболочке MongoDB давайте выполним команду: db.currentOp ()

02.DB.CURRENTOP

Ссылка http://docs.mongodb.org/manual/reference/method/db.currentOp/

db.currentOp ()

команда db.killOp (<opid>)
Описание Завершает операцию, указанную идентификатором операции (возвращается функцией db.currentOp () ). Рекомендация для этой команды — использовать ее для завершения операций, инициированных только клиентами, и не завершать операции внутренней базы данных.
Ссылка http://docs.mongodb.org/manual/reference/method/db.killOp/

db.killOp ()

команда buildInfo
обертка db.serverBuildInfo ()
Описание Возвращает сводку сборки для текущего экземпляра сервера MongoDB .
пример В оболочке MongoDB давайте выполним команду: db.serverBuildInfo ()

02.DB.SERVERBUILDINFO

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({buildInfo: 1})

Примечание. Отображается только фрагмент выходных данных.

Ссылка http://docs.mongodb.org/manual/reference/command/buildInfo/

http://docs.mongodb.org/manual/reference/method/db.serverBuildInfo/

buildInfo

команда hostInfo
обертка db.hostInfo ()
Описание Возвращает информацию о базовой системе, на которой работает экземпляр сервера MongoDB . Некоторые из возвращенных полей включены только на некоторых платформах.
пример В оболочке MongoDB давайте выполним команду: db.hostInfo ()

02.DB.HOSTINFO

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({hostInfo: 1})

Примечание. Отображается только фрагмент выходных данных.

Ссылка http://docs.mongodb.org/manual/reference/command/hostInfo/

http://docs.mongodb.org/manual/reference/method/db.hostInfo/

hostInfo

команда Статус сервера
обертка db.serverStatus ()
Описание Возвращает обзор состояния процесса экземпляра сервера MongoDB , включая различные статистические данные коллекции об экземпляре.
пример В оболочке MongoDB давайте выполним команду: db.serverStatus ()

02.DB.SERVERSTATUS

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.runCommand ({serverStatus: 1})

Примечание. Отображается только фрагмент выходных данных.

Ссылка http://docs.mongodb.org/manual/reference/command/serverStatus/

http://docs.mongodb.org/manual/reference/method/db.serverStatus/

Статус сервера

команда неисправность
обертка db.shutdownServer ()
Описание Очищает все ресурсы базы данных и затем завершает текущий процесс экземпляра сервера MongoDB . Он должен быть запущен в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команды:

1
use admin
1
db.shutdownServer()

02.DB.SHUTDOWN

В качестве альтернативы, давайте запустим ту же команду с помощью вызова runCommand () : db.adminCommand ({shutdown: 1})

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

Ссылка http://docs.mongodb.org/manual/reference/command/shutdown/

http://docs.mongodb.org/manual/reference/method/db.shutdownServer/

неисправность

команда getCmdLineOpts
Описание Вывод параметров командной строки, используемых для запуска текущего экземпляра сервера MongoDB . Он должен быть запущен в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команду: db.adminCommand ({getCmdLineOpts: 1})

02.GETCMDLINEOPTS

Ссылка http://docs.mongodb.org/manual/reference/command/getCmdLineOpts/

getCmdLineOpts

команда Вверх
Описание Возвращает статистику использования для каждой коллекции и предоставляет количество затраченного времени (в микросекундах) и количество операций для следующих типов событий:

  • общее
  • блокировка чтение
  • блокировка запись
  • запросы
  • getmore
  • вставка
  • Обновить
  • удалять
  • команды

Он должен быть запущен в контексте базы данных администратора .

пример В оболочке MongoDB давайте выполним команду: db.adminCommand ({top: 1})

02.TOP

Примечание. Отображается только фрагмент выходных данных.

Ссылка http://docs.mongodb.org/manual/reference/command/top/

верхняя

команда getLog
параметры
1
2
3
{
    getLog: <log>
}
Описание Возвращает последние сообщения из текущего журнала процесса экземпляра сервера MongoDB . Параметр <log> может иметь одно из следующих значений:

  • глобальный : объединенный вывод всех последних записей журнала
  • startupWarnings : выводит ошибки или предупреждения, возникшие при запуске сервера
  • rs : выводит записи журнала, связанные с активностью набора реплик

Он должен быть запущен в контексте базы данных администратора .

пример В оболочке MongoDB давайте выполним команду: db.adminCommand ({getLog: 1})

02.GETLOG

Примечание. Отображается только фрагмент выходных данных.

Ссылка http://docs.mongodb.org/manual/reference/command/getLog/

getLog

команда сенсорный
параметры
1
2
3
4
5
{
    touch: <collection>,
    data: <true|false>,
    index: <true|false>
}
Описание Загружает данные из слоя хранения данных в память. Он может загружать индексы, данные (документы) или как данные (документы), так и индексы. Выполнение этой команды гарантирует, что коллекция <collection> и / или ее индексы находятся / находятся в памяти перед началом другой операции. Загружая коллекцию или индексы в память, экземпляр сервера MongoDB может выполнять последующие операции более эффективно.
пример В оболочке MongoDB давайте выполним команды:

1
db.createCollection( "mycoll" )
1
db.runCommand( { touch: "mycoll", index: true } )

02.TOUCH

Ссылка http://docs.mongodb.org/manual/reference/command/touch/

сенсорный

команда LogRotate
Описание Позволяет вращать журналы экземпляров сервера MongoDB, чтобы один файл журнала не занимал слишком много места на диске. Он должен быть запущен в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команду: db.adminCommand ({logRotate: 1})

02.LOGROTATE

Ссылка http://docs.mongodb.org/manual/reference/command/logRotate/

LogRotate

команда setParameter
параметры
1
2
3
{
    <option>: <value>
}
Описание Позволяет изменять параметры экземпляра сервера MongoDB , обычно устанавливаемые в командной строке. Параметр <option> может иметь одно из следующих значений:

  • journalCommitInterval
  • LOGLEVEL
  • logUserIds
  • notablescan
  • тихий
  • replApplyBatchSize
  • replIndexPrefetch
  • syncdelay
  • traceExceptions
  • textSearchEnabled
  • sslMode
  • clusterAuthMode
  • userCacheInvalidationIntervalSecs

Он должен быть запущен в контексте базы данных администратора .

пример В оболочке MongoDB давайте выполним команду: db.adminCommand ({setParameter: 1, «textSearchEnabled»: true})

02.SETPARAMETER

Ссылка http://docs.mongodb.org/manual/reference/command/setParameter/

setParameter

команда getParameter
параметры
1
2
3
{
    <option>: <value>
}
Описание Позволяет получить значение параметров экземпляра сервера MongoDB , обычно устанавливаемых в командной строке. Параметр <option> соответствует спецификации команды setParameter . Он должен быть запущен в контексте базы данных администратора .
пример В оболочке MongoDB давайте выполним команду: db.adminCommand ({getParameter: 1, «textSearchEnabled»: 1})

02.GETPARAMETER

Ссылка http://docs.mongodb.org/manual/reference/command/getParameter/

getParameter

9. Что дальше

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