Хотите ускорить работу mongodb? Посмотрите эту серию руководств (1)

MongoDB
Хотите ускорить работу mongodb? Посмотрите эту серию руководств (1)

Вы хотите ускорить mongodb? Вы можете взглянуть на эту серию руководств (2)

1. Введение в монгодб

  • MongoDB написана на языке C++ и представляет собой систему баз данных с открытым исходным кодом, основанную на распределенном хранилище файлов.

  • В случае высокой нагрузки добавление дополнительных узлов может гарантировать производительность сервера.

  • MongoDB стремится предоставить масштабируемое, высокопроизводительное решение для хранения данных для веб-приложений.

  • MongoDB хранит данные в виде документа, а структура данных состоит из пар ключ-значение (ключ=>значение). Документы MongoDB аналогичны объектам JSON. Значения полей могут содержать другие документы, массивы и массивы документов

2. адрес загрузки mongodb

Woohoo. MongoDB.com/download-testing…Выберите версию, которая подходит вам.

  • Следует отметить, что, например, под Windows после завершения установки вам необходимо установить переменную среды в каталог bin папки, в которую вы установили mongodb.
  • Например, я установил mongodb в E:\mongodb, поэтому каталог bin — E:\mongodb\bin.

3. Применимые сценарии и основные понятия mongodb

3.1 Применимые сценарии MongoDB

  • Данные большого размера и малой ценности, такие как данные веб-сайта и кеш.

  • В сценариях с высокой масштабируемостью он используется для хранения объектов и данных JSON.

3.2 Основные понятия MongoDB

база данных

Экземпляр MongoDB может иметь одну или несколько независимых баз данных, каждая со своими коллекциями.

собирать

Коллекции можно рассматривать как таблицы с динамическими схемами.

Документация

Документ — это основная единица данных в MongoDB, похожая на строку RDB. Документ представляет собой упорядоченный набор пар ключ-значение. В JS документы представлены как объекты.

_id

Каждый документ имеет специальный «_id», уникальный в пределах коллекции, к которой принадлежит документ.

JavaScript shell

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

Пример

  • База данных Один экземпляр MongoDB может поддерживать несколько независимых баз данных, например, система управления студентами может соответствовать экземпляру базы данных.
  • Коллекции Базы данных состоят из коллекций, коллекция используется для представления объекта, например, набора студентов.
  • Коллекция документов состоит из документов, один документ представляет собой одну запись, например, одноклассник Чжан Сан является документом.

4. Добавляйте и удаляйте сервисы

Добавить сервис в инструмент командной строки

mongod.exe --dbpath E:\mongodata --logpath E:\mongolog --logappend --directoryperdb --serviceName mongodb --install
  • --Dbpath Задает каталог для хранения данных
  • --logpath куда поместить логи
  • --logappend метод записи лога, можно добавить старый лог
  • --directoryperdb хранить каждую базу данных отдельно
  • Имя службы из --serviceName вызывается
  • --install установить службу На следующем рисунке показано, что служба успешно добавлена

5. запуск и подключение mongodb

Запустите службу монгодб

mongod --dbpath=E:\Mongodb\data

Если появляется сообщение Ожидание соединений на порту 27017, это означает, что запуск прошел успешно, и запрос клиента отслеживался на порту 27017 Примечание: Инструкции по запуску

Опции имея в виду
--port Укажите номер порта службы, порт по умолчанию 27017.
--logpath Укажите файл журнала MongoDB, обратите внимание, что указанный файл не является каталогом
--logappend запись журнала с помощью добавления
--dbpath Укажите путь к базе данных
--directoryperdb Настройки для каждой базы данных будут сохранены в отдельном каталоге

Затем откройте новое окно командной строки и введите

mongo 

ссылка на базу данных

Наконец, мы представляем инструмент визуализации mongodb Studio3T.

studio3t.com/

6. Работа с базой данных

6.1 Использование базы данных

use database_name 
// 例如我们这里可以建一个叫school的数据库
use school

database_nameимя базы данных

ПРИМЕЧАНИЕ. Если эта база данных существует, то переключитесь к этому в базе данных, если база данных еще не существует, не может быть разрезана, но она не сразу создает базу данных Переключиться в школьную базу данных

6.2 Просмотр всех баз данных

show dbs

Примечание. Если только что созданной нами базы данных школы нет в списке, для ее отображения нам необходимо вставить некоторые данные в базу данных школы. db.students.insert({возраст:1});

после инертных данных

6.3 Просмотр текущей используемой базы данных

db

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

6.4 Удалить базу данных

db.dropDatabase()

школьная база данных исчезла

7. Операция сбора

7.1 Просмотр справки коллекции

use demo
db.demo.help()

7.2 Создание коллекции

7.2.1 Создание пустой коллекции

db.createCollection(collection_Name) 

collection_Name Имя коллекции

7.2.2 Создание коллекции и вставка документа

collection_Name Имя коллекции задокументировать вставляемый документ

db.collection_Name.insert(document)
// 例如
db.demo.insert({age:1})

Примечание. Идентификатор объекта на изображении выше является обычным, правила следующие.

Раньше, когда мы использовали реляционные базы данных, такие как MySQL, первичный ключ устанавливался на автоинкремент. Но в распределенной среде этот метод неосуществим, и возникнут конфликты. С этой целью MongoDB использует тип ObjectId в качестве первичного ключа. ObjectId — это 12-байтовая строка типа BSON. В порядке байтов один представляет:

- -
4 байта: Временная метка UNIX
3 байта: Представляет машину, на которой работает MongoDB.
2 байта: Указывает процесс, сгенерировавший этот _id
3 байта: Значение, сгенерированное счетчиком, начиная со случайного числа

7.3 Просмотр коллекции в базе данных

show collections

7.4 Просмотр текущей коллекции

db.getName() 或者 db

7.5 Удалить текущую коллекцию

db.dropDatabase()

8. Вставьте документ

8.1 insert

db.collection_name.insert(document);

collection_name Имя коллекции

документ вставленный документ

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

db.demo.insert({_id:1,age:1});

8.2 save

db.collection_name.save(document)

collection_name Имя коллекции документ вставленный документ

Примечание. Если поле _id не указано, метод save() аналогичен методу insert(). Если поле _id указано, данные для этого _id обновляются.Мы сохраняем данные с id = 1, которые мы сохранили ранее, чтобы увидеть, был ли обновлен этот фрагмент данных.

db.demo.save({_id:1, age:2})

9. Обновление документации

db.collection.update(
   <query>,
   <updateObj>,
   {
     upsert: <boolean>,
     multi: <boolean>
   }
)
параметр -
query Условия запроса, указывающие, какие документы для обновления соответствуют условиям
update обновленный объект или указать какой-либо оператор обновления
$set Накопить на исходной основе
upsert Необязательный, этот параметр указывает, следует ли вставлять updateObj, если нет подходящей записи.По умолчанию установлено значение false, которое не вставляется.
multi Необязательно, mongodb обновляет только первую запись, найденную по умолчанию. Если этот параметр имеет значение true, он обновляет все подходящие записи.

9.1 Обновление документации

db.demo.insert({name: 'zhangsan'});
db.demo.update({name:'zhangsan'},{age:12})

9.2 upsert

Измените значение имени lisi в данных в коллекции студентов на lisi, так как в исходной таблице нет имени: lisi, этот фрагмент данных не будет вставлен, но для параметра upsert установлено значение true и вставка прошла успешно.

db.demo.update({name:'lisi'}, {name:'lisi'}, {upsert:true});

9.3 multi

Если есть несколько фрагментов данных, возраст которых равен 1, будет обновлен только один. Если вы хотите обновить их все, вам нужно указать параметр {multi:true}

db.school.insert({age:1});
db.school.insert({age:1});
db.school.insert({age:1});
db.school.update({age:1}, {$set:{name:'lisi'}}, {multi:true});
db.school.find({})

10. Оператор обновления

10.1 $set

Укажите обновленное значение напрямую

use c3;
db.c3.insert({name:'a'});
db.c3.update({name:'a'},{$set:{age:10}});
db.c3.find({})

10.2 $inc

Накопить на исходной основе

db.c3.update({name:'a'},{$inc:{age:1}});

10.3 $unset

удалить указанный ключ

db.c3.update({name:'2'},{$unset:{age:11}});

10.4 $push

добавить элемент в массив

var result = db.student.update({name:'张三'},{
    $push:{"hobbys":"smoking"}
});

10.5 $ne

$ne похож на MYSQL, которого нет или не существует

db.c3.update({hobbys:{$ne:"eating"}},{$push:{"hobbys":"sleeping"}});

10.6 $addToSet

Добавить элементы в коллекцию

db.c3.update({a:1},{$addToSet:{"hobbys":"smoking"}});

10.7 $each

Добавляйте элементы массива в коллекцию один за другим

db.a.insert({name:'a', hobbys:[1,2]});
db.a.update({name:'a'},{$addToSet:{hobbys:{$each:[3,4]}}});
db.a.find()

10.8 $pop

Удаляет соответствующий элемент по указанному индексу из массива

  • {$pop:{"key":1}} удаляет элемент AND из конца массива
  • {$pop:{"key":-1}} удаляет элемент И из начала массива
db.c3.update({name:'a'},{$pop:{hobbys:1}});
db.c3.find()

10.9 Изменить указанный элемент индекса

db.c3.update({name:'zfpx1'},{$set:{"hobbys.0":"smoking2"}});

11. Удаление документов

Метод remove используется для удаления данных из коллекции.

11.1 Синтаксис

db.collection.remove(
   <query>,
   {
     justOne: <boolean>
   }
)

11.2 Параметры

- -
query (Необязательно) Условия для удаленных документов.
justOne (Необязательно) Если установлено значение true или 1, будет удален только первый из нескольких совпадающих документов.

11.3 Примеры

Удалите все данные документа с именем zfpx2 в рабочей коллекции.

db.c3.remove({name:'a'});

Удалить только один, даже если он соответствует более чем одному

db.c3.remove({name:'a'},{justOne:true});

12. Запросить документы

12.1 find

грамматика

db.collection_name.find()

параметр

- -
collection_name название коллекции

пример

Все документы по запросу C3

db.students.find()

12.2 Запрос указанного столбца

грамматика

db.collection_name.find({queryWhere},{key:1,key:1})

список параметров

- -
collection_name название коллекции
queryWhere См. Операторы условия запроса
key указать столбцы для возврата
1 показывать

пример

вернуть только отображаемый столбец возраста

db.c3.insert([{name:1,age:2},{name:1,age:3},{name:1,age:4}]);
db.c3.find({},{_id:0, age:1});

12.3 findOne

Запросить первые данные совпадающих результатов Синтаксис

db.collection_name.findOne()

пример

db.c3.findOne()`

12.4 $in

Поле запроса находится в диапазоне

db.c3.insert([{age:30, name:1},{age:100, name:2},{age:40, name:3},{age:60, name:4}])
db.c3.find({age:{$in:[30,100]}},{name:1,age:1});

12.5 $nin

Поле запроса не входит в диапазон

db.c3.find({age:{$nin:[30,100]}},{name:1,age:1});

12.6 $not

Отменить конкретное условие

db.c3.find({age:{$not:{$gte:20,$lte:30}}});

12.7 array

запрос к массиву

// 按所有元素匹配
 db.c3.find({friends:[ "A", "B", "C", "D" ]});
 
//匹配一项 包含A的就可以
db.c3.find({friends:"A"});

// $all 必须同时包含A B
db.c3.find({friends:{$all:['A',"B"]}});

// $in 或者关系 ,包含A或者B
db.c3.find({friends:{$in:['A',"B"]}});
//$size 按数组的长度去匹配
db.c3.find({friends:{$size:4}});

//$slice 只返回数组中的某一部分
db.c3.find({friends:{$size:5}},{name:1,friends:{$slice:2}});
db.c3.find({friends:{$size:5}},{name:1,friends:{$slice:-2}});
$slice:["$array", [startIndex, ] length ] (startIndex可以省略,默认从0开始)
db.c3.find({},{friends:{$slice:[0,3]}});

12.8 where

db.c3.find({$where:"this.age>30"},{name:1,age:1});

12.9 cursor

Курсор — это не результат запроса, а возвращаемый ресурс или интерфейс запроса, через этот интерфейс данные можно читать по одному

var result = db.student.find();

while(result.hasNext()){
    printjson(result.next());
}

13. Условные операторы

Условный оператор используется для сравнения двух выражений и получения данных из коллекции mongoDB.

13.1 Операторы больше, больше, чем равно, меньше чем, меньше чем равно

параметр

- -
$gt больше, чем
$gte больше или равно
$lt меньше, чем
$lte меньше или равно

13.2 Запрос с _id

грамматика

db.collectoin_name.find({"_id" : ObjectId("value")})

query_id — это данные 562af23062d5a57609133974.

db.stuc3dents.find({_id:ObjectId("5adb666ecd738e9771638985")}); 

13.8 Количество наборов результатов запроса

грамматика

db.collectoin_name.find().count();
db.c3.find().count()

13.9 Обычное сопоставление

грамматика

db.collection.find({key:/value/})

параметр

- -
collectoin_name название коллекции
key поле
value стоимость

Запросите данные, содержащие joe в имени, обычное может соответствовать только строке

db.user.find({name:/joe/})

14. И и или

14.1 and

Метод find может передавать несколько ключей (ключей), каждый ключ (ключ) отделяется запятой

грамматика

db.collection_name.find({key1:value1, key2:value2})

Данные запроса, имя которых равно 1, а возраст равен 30.

db.students.find({name:1,age:30})

14.2 or

грамматика

db.collection_name.find(
   {
      $or: [
   {key1: value1}, {key2:value2}
      ]
   }
)

Данные запроса с возрастом = 30 или возрастом = 100

db.c3.find({$or:[{age:30},{age:100}]})

14.3 объединение и или или или или или

грамматика

db.collection_name.find(
   {
     key1:value1,
     key2:value2,
     $or: [
   {key1: value1},
   {key2:value2}
     ]
   }

)

Пример Данные запроса, возраст которых равен 30, а имя равно 1 или имя равно 3.

db.c3.find({age: 30, $or:[{name:1},{age:3}]})

15. Пейджинговый запрос

15.1 limit

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

db.collectoin_name.find().limit(number)
var a = [];
for(var i = 0;i<10;i++){
    a.push({age:i})
};
db.c3.insert(a);
db.students.find().limit(3)

15.2 skip

Пропустить указанный объем данных.Метод skip также принимает числовой параметр в виде количества пропущенных записей.Синтаксис

db.collectoin_name.find().skip(number)
db.c3.find().skip(3)

15.3 skip+limit

Пагинация обычно реализуется таким образом Синтаксис

db.collectoin_name.find().skip(skipNum).limit(limitNum)
db.c3.find().skip(3).limit(3);

15.4 сортировка сортировки

Метод sort() может указывать поле сортировки по параметрам и использовать 1 и -1 для указания метода сортировки, где 1 соответствует возрастанию, а -1 — убыванию. грамматика

db.collectoin_name.find().sort({key:1})
db.collectoin_name.find().sort({key:-1})
db.c3
![](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2019/4/9/169fff28b40c6b57~tplv-t2oaga2asx-image.image).find().sort({age:1})