Документ запросов MongoDB
MongoDB — это база данных NoSQL (не только SQL), поскольку хранение и извлечение данных в MongoDB осуществляется не в виде таблиц, как в SQL. Он хранит данные в структуре BSON. Он использует формат данных BSON или Binary JSON для организации и хранения данных. Этот формат данных включает все типы данных JSON и добавляет типы для дат, целых чисел разного размера, ObjectId и двоичных данных. В MongoDB база данных представляет собой физический контейнер для коллекций. Он содержит одну или несколько коллекций. Внутри сервера MongoDB находится несколько баз данных. База данных хранит данные в коллекции. Коллекция — это группа из одного или нескольких документов, существующих в одной базе данных. Одна коллекция содержит разные типы документов, а это означает, что если один документ содержит 10 полей, то другой документ в той же коллекции может содержать 20 полей. В этой статье мы обсудим базовую концепцию серверов MongoDB, таких как базы данных, коллекции и документы, и сосредоточимся в основном на основных запросах базы данных и коллекции MongoDB с помощью примеров. Эта статья поможет вам быстро начать работу с MongoDB и поможет вам освоиться с запросами MongoDB.
ПОКАЗАТЬ Заявление
Он используется для отображения всех баз данных, присутствующих на сервере MongoDB. Он не покажет вам вновь созданную базу данных, пока вы не добавите в нее коллекцию. Если вы хотите проверить текущую выбранную базу данных, вы можете использовать команду db.
Синтаксис:
show databases;
Пример:
Когда вы запускаете команду show databases, она покажет вам все базы данных, присутствующие в MongoDB, за исключением баз данных, у которых нет коллекции. В этом примере company, myDatabase, test и University — это пользовательские базы данных, а admin, config и local — встроенные базы данных. Одну коллекцию важно вставить в базу данных для отображения в команде show databases.
Заявление БД
Он используется для отображения текущей выбранной базы данных. Если база данных не содержит никакой коллекции, команда show databases не покажет эту базу данных в списке. Итак, чтобы проверить, какую базу данных мы используем, вам нужно использовать эту команду.
Синтаксис:
db;
Пример:
В этом примере мы создали одну базу данных с именем University с помощью команды use. После этого мы запускаем команду show databases, чтобы проверить список баз данных в MongoDb, но в MongoDB нет университетской базы данных. Причина в том, что база данных университета не содержит никакой коллекции. Итак, чтобы проверить текущую выбранную базу данных, используйте команду db.
Заявление об использовании
Он используется для создания новой базы данных и переключения на нее, если база данных не существует на сервере MongoDB или, если база данных существует, используйте команду для переключения на существующую базу данных.
Примечание. После создания новой базы данных, если вы будете показывать базы данных, она не покажет вам вновь созданную базу данных, пока вы не добавите в нее коллекцию. Если вы хотите проверить текущую выбранную базу данных, вы можете использовать команду db.
Синтаксис:
use <database_name>;
<database_name> — это имя базы данных. Имя базы данных должно соответствовать соглашению об именовании имени базы данных сервера MongoDB.
Пример:
use university;
В этом примере мы создали одну новую базу данных с именем University с помощью команды use. Он также переключится на базу данных университета. Вы можете проверить текущую выбранную базу данных с помощью команды db, и в этом примере вы получите университет.
Заявление DROP
Он используется для удаления/удаления базы данных из MongoDB. Чтобы удалить базу данных, сначала вам нужно переключиться на базу данных, которую вы хотите удалить, используя команду use, а затем вызвав метод dropDatabase() для выбранной базы данных.
Синтаксис:
use <database-name>;
db;
db.dropDatabase();
Пример:
use university;
db;
db.dropDatabase();
В этом примере мы используем команду use для переключения на базу данных, которую мы хотим удалить с сервера MongoDb. После использования команды use проверьте текущую базу данных, чтобы убедиться, что база данных правильно переключена с помощью команды db. После того, как вы переключились на базу данных, используйте метод dropDatabase() для выбранной базы данных.
ПОКАЗАТЬ Заявление
Он используется для отображения всех коллекций, присутствующих в выбранной базе данных.
Синтаксис:
db;
show collections;
Пример:
Здесь мы сначала выбираем базу данных, список коллекций которой вы хотите проверить, с помощью команды db, а затем запускаем команду show collections, чтобы проверить список коллекций, присутствующих в выбранной базе данных.
СОЗДАТЬ Заявление
Этот оператор используется для создания коллекции в выбранной базе данных. Метод createCollection() примет имя коллекции в качестве аргумента. Имя коллекции не должно быть нулевой или пустой строкой, иначе будет выдана ошибка.
Синтаксис:
db.createCollection(“<name_of_collection>”);
<name_of_collection> — это имя коллекции. Имя коллекции должно соответствовать соглашению об именовании имени коллекции MongoDB.
Пример:
db.createCollection(“teacher_contact_details”);
В этом примере мы создаем коллекцию Teacher_contact_details. Во-первых, запустите команду use, чтобы переключиться на базу данных университета, в которую мы хотим вставить коллекцию. Затем проверьте выбранную базу данных с помощью команды db. После этого вызовите метод createCollection() для выбранной базы данных и передайте имя коллекции в качестве аргумента. Чтобы проверить, вставлена ли коллекция в базу данных, выполните команду show collections.
Заявление о сбросе
Это используется для удаления/удаления коллекции из выбранной базы данных. Он также удалит все индексы, связанные с отброшенной коллекцией. Чтобы удалить любую коллекцию из выбранной базы данных, вызовите метод drop() для этой коллекции. Если коллекция присутствует в базе данных и будет успешно удалена, она вернет значение true. Если коллекции нет в базе данных, она вернет false.
Синтаксис:
db.<collection_name>.drop();
Пример:
db.teacher_contact_details.drop();
В этом примере мы удаляем коллекцию с именем Teacher_contact_details. Во-первых, мы запускаем команду use для переключения на базу данных университета, а затем проверяем, переключена ли база данных или нет, с помощью команды db. После этого мы используем команду show collections, чтобы проверить список коллекций, а затем вызываем метод drop() для коллекции Teacher_contact_details. Возвращает true, значит коллекция, а также все индексы, связанные с ней, успешно удалены.
Найдите документы
Он используется для поиска всех документов, удовлетворяющих заданным критериям в выбранной коллекции.
Синтаксис:
db.<collection_name>.find(<filter>, <projection>);
- <фильтр> — это критерий выбора, используемый для выбора документов. Если нам нужны все документы в выбранной коллекции, то либо опустите параметр фильтра, либо передайте пустой документ ({}).
- <projection> используется для выбора определенных полей из коллекции для включения их в выходной документ. Чтобы включить поле, используйте 1. ' _id' всегда включается в выходной документ, поэтому, чтобы исключить его, используйте _id : 0.
Примечание. Проекция используется для повышения производительности за счет оптимизации запроса. Это уменьшает поля в документе.
Пример:
В следующем примере мы используем метод find() без параметров, который возвращает все документы из коллекции и возвращает все поля документов. Следующая операция возвращает все документы из коллекции «employee_details», которая присутствует в базе данных компании.
db.employee_details.find(); or db.employee_details.find({});
Найти первый документ
Он используется для поиска первого документа, удовлетворяющего заданным критериям в выбранной коллекции. Он возвращает первый документ в коллекции только в том случае, если у нас есть более одного документа, соответствующего указанным критериям.
Синтаксис:
db.<collection_name>.findOne(<filter>, <projection>);
- <фильтр> — это критерий выбора, используемый для выбора документа. Если мы передаем пустой документ ({}) в качестве фильтра, этот метод вернет первый документ в коллекции.
- <projection> используется для выбора определенных полей из коллекции для включения их в выходной документ. Чтобы включить поле, используйте 1. ' _id' всегда включается в выходной документ, поэтому, чтобы исключить его, используйте _id : 0.
Пример:
В следующем примере мы используем метод findOne() без параметров, который возвращает первый документ из коллекции и возвращает все поля документа.
db.employee_details.findOne() or db.employee_details.findOne({});
Найти и заменить документ
Он используется для замены первого документа, удовлетворяющего заданным критериям, данным замещающим документом. Он не используется для обновления полей. По умолчанию возвращается исходный документ. Для возврата замещающего документа установите параметр «returnNewDocument: true» в разделе параметров.
Синтаксис:
db.<collection_name>.findOneAndReplace(
<filter>,
<replacement> ,
<option>
);
- <фильтр> — это критерий выбора, используемый для выбора документа. Если мы передаем пустой документ ({}) в качестве фильтра, то этот метод заменит первый документ в коллекции.
- <replacement> — это замещающий документ, который заменяет первый документ, выбранный в соответствии с указанным фильтром.
- <опция> является необязательным.
Пример:
В следующем примере мы используем метод findOneAndReplace(), который используется для замены документа, соответствующего указанному фильтру, замещающим документом.
db.employee_details.findOneAndReplace(
{“salary” : 30000},
{ “salary” : 40000,
“name”: {“firstName” : “Rohit”, “lastName” : “Khurana”},
}
);
- {“salary” : 30000} — это аргумент фильтра, соответствующий заменяемому документу.
- { «зарплата» : 40000, «имя»: {«имя» : «Рохит», «фамилия» : «Хурана»} } — заменяющий документ.
- Следующая операция сопоставляет документ, в котором поле зарплаты равно 30000 из коллекции «employee_details», и заменяет этот документ на { «зарплата»: 40000, «имя»: {«имя»: «Рохит», «фамилия»: «Хурана» } }. Он возвращает исходный документ.
Вот документ после замены:
{
“_id”: {
“$oid”: “629f87d1863729e229a35887”
},
“salary”: 40000,
“name”: {
“firstName”: “Rohit”,
“lastName”: “Khurana”
}
}
Найти и удалить документ
Используется для удаления первого документа, соответствующего указанному фильтру. Он возвращает удаленный документ, если совпадение найдено, в противном случае возвращает ноль.
Синтаксис:
db.<collection_name>.findOneAndDelete(
<filter> ,
<option>
)
Здесь <фильтр> — это критерий выбора, используемый для выбора документа. Если мы передаем пустой документ ({}) в качестве фильтра, этот метод удалит первый документ в коллекции.
Пример:
В следующем примере мы используем метод findOneAndDelete(), который используется для удаления первого документа, соответствующего указанному фильтру.
db.employee_details.findOneAndDelete({“name.firstName” : “Rohit”});
- {"name.firstName" : "Rohit"} – это аргумент фильтра, соответствующий удаляемому документу.
- Следующая операция выбирает документ, в котором поле «name.firstName» равно «Rohit», из коллекции «employee_details», а затем удаляет этот документ. Он возвращает удаленный документ.
Найти и обновить документ
Он используется для обновления первого документа, соответствующего заданному фильтру. Он возвращает исходный документ. По умолчанию он возвращает исходный документ. Чтобы вернуть обновленный документ, установите параметр «returnNewDocument: true» в разделе параметров.
Синтаксис:
db.Students.findOneAndUpdate(
<filter> ,
<update>,
<option>
)
- <фильтр> — это критерий выбора, используемый для выбора документа. Если мы передаем пустой документ ({}) в качестве фильтра, этот метод обновит первый документ в коллекции.
- <update> — это документ обновления или конвейер агрегации.
- <опция> является необязательным
Пример:
В следующем примере мы используем метод findOneAndUpdate(), который используется для обновления документа, соответствующего указанному фильтру.
- {"name.firstName" : "Romal"} — это аргумент фильтра, соответствующий документу, который нужно обновить.
- {$set: {"address.phone.number" : 9876543210, "salary" : 80000} } определяет применяемое изменение. Он использует оператор $set, чтобы установить значение поля «address.phone.number» (встроенный документ) в «9876543210» и поле «salary» в «80000».
- Следующая операция выбирает документ, в котором поле «name.firstName» равно «Romal», из коллекции «employee_details», а затем обновляет этот документ. Он возвращает исходный документ.
db.employee_details.findOneAndUpdate(
{“name.firstName” : “Romal” },
{$set: {“address.phone.number” : 9876543210 , “salary” : 80000}
}
)
Ниже приведен обновленный документ.
{
“_id”: {
“$oid”: “629118c67017e180fa9ff11e”
},
“name”: {
“firstName”: “Romal”,
“lastName”: “Singla”
},
“address”: {
“phone”: {
“type”: “Home”,
“number”: 9876543210
}
},
“salary”: 80000,
“doj”: {
“$date”: “2022-05-26T18:30:00Z”
},
“skills”: [
“React”,
“MongoDB”,
“Javascript”
]
}
Удалить один документ
Используется для удаления первого документа, соответствующего фильтру. Он удаляет только первый документ в коллекции, если у нас есть более одного документа, соответствующего указанным критериям.
Синтаксис:
db.<collection_name>.deleteOne(<filter>);
Здесь <filter> — это документ, определяющий критерии удаления. Если фильтр соответствует более чем одному документу, то метод deleteOne() удаляет только первый документ.
Пример:
В следующем примере мы используем метод deleteOne() для удаления документа, где «name.firstName» — «Rohit». {"name.firstName" : "Rohit"} — это аргумент фильтра, который соответствует удаляемым документам. В этом примере он соответствует документу, чье name.firstName (встроенный документ) — «Rohit».
db.employee_details.deleteOne({“name.firstName” : “Rohit”});
Описанная выше операция возвращает следующий документ. Здесь deleteCount, содержащий количество удаленных документов.
{ “acknowledged” : true, “deletedCount” : 1 }
Удалить много документов
Он используется для удаления всех документов из коллекции, соответствующей фильтру. Если мы передаем пустой документ ({}), то метод deleteMany() удаляет все документы из коллекции. Пожалуйста, будьте осторожны при использовании этого метода.
Синтаксис:
db.<collection_name>.deleteMany(<filter>)
Здесь <фильтр> — это документ, который указывает условие для выбора документа для удаления. Если вы передадите пустой документ ({}) в метод deleteMany(), он удалит все документы из выбранной коллекции.
Пример:
В следующем примере мы используем метод deleteMany() для удаления всех документов, содержащих зарплату: 30000. {«Зарплата»: 30000} — это аргумент фильтра, соответствующий удаляемым документам. В этом примере он соответствует всем документам, чья «зарплата»: 30000.
db.employee_details.deleteMany({“salary” : 30000});
Описанная выше операция возвращает следующий документ. Здесь deleteCount содержит количество удаленных документов.
{ “acknowledged” : true, “deletedCount” : 3 }
Вставить один документ
Он используется для вставки одного документа в коллекцию. Он вызывает метод insertOne() для коллекции, в которую мы хотим вставить документ. Если коллекция не существует, то метод insertOne() создает коллекцию.
Здесь метод insertOne() принимает в качестве аргумента документ в формате данных BSON.
Синтаксис:
db.<collection_name>.insertOne(<document>);
Пример:
В этом примере мы создаем один документ, используя метод insertOne() с 5 полями с именами: имя, адрес, зарплата, додж, навыки. Имя содержит тип объекта, адрес содержит документ (встроенные документы), зарплата содержит номер, дож содержит тип даты, навыки содержат тип массива. В этом документе нет поля «_id». Итак, MongoDB создает и добавляет ключ «_id» и присваивает ему уникальное значение ObjectId().
db.employee_details.insertOne(
{
“name”: {“firstName” : “Rohit”, “lastName” : “Singla”},
“address”: {
phone: { type: “Home”, number: “000-000-000-7” }
},
“salary”: 30000.00,
“doj”: new Date(’27 May 2022′),
“skills” : [“React”, “MongoDB”, “Javascript” ]
}
);
Приведенная выше операция возвращает следующий документ:
{
“acknowledged” : true,
“insertedId” : ObjectId(“62911cfe7017e180fa9ff122”);
}
Вставить несколько документов
Он используется для вставки нескольких документов в коллекцию. Он вызывает метод insertMany() для коллекции, в которую мы хотим вставить документы. Здесь метод insertMany() принимает в качестве аргумента массив документов в формате данных BSON.
Синтаксис:
db.<collection_name>.insertMany(
[
<document1>, <document2>, …
]
);
Пример:
В этом примере мы создаем два документа с помощью метода insertMany() с 5 полями с именами город, штат, страна, пин-код.
В этом документе нет поля «_id». Итак, MongoDB создает и добавляет ключ «_id» и присваивает ему уникальное значение ObjectId().
db.employee_details_contact.insertMany(
[
{
“city”: “Hisar”, “state”: “Haryana”,
“country” : “India” , “pincode” : “656565”
},
{
“city”: “Gurgaon”, “state”: “Haryana”,
“country” : “India” , “pincode” : “345678”
},
]
);
Приведенная выше операция возвращает следующий документ:
{
“acknowledged” : true,
“insertedIds” : [
ObjectId(“629211cf7017e180fa9ff123”),
ObjectId(“629211cf7017e180fa9ff124”)
]
}
Обновить документ
Он используется для изменения документа или документов в коллекции, которые удовлетворяют фильтру. Это может обновить существующий документ, полностью заменить существующий документ или также добавить новый документ в коллекцию. Используя параметр multi:true, он может обновлять все документы, которые удовлетворяют условию, такому как метод updateMany().
Синтаксис:
db.<collection_name>.update(
<filter>,
<update>
)
- <filter> — это документ, определяющий критерии обновления.
- <update> — это документ, в котором указывается применяемое изменение.
Пример:
В следующем примере мы используем метод update() для обновления поля «address.phone.number» документа, где «name.firstName» — это «Rohit».
- {"name.firstName" : "Rohit"} — это аргумент фильтра, соответствующий документам, которые необходимо обновить. В этом примере он соответствует документу, чье name.firstName (встроенный документ) — «Rohit».
- {$set : {"address.phone.number" : "111-111-111-8"} } определяет применяемое изменение. Он использует оператор $set для установки значения поля «address.phone.number» (встроенный документ) в «111-111-111-8».
db.employee_details.update(
{“name.firstName” : “Rohit”},
{
$set : {“address.phone.number” : “111-111-111-8”}
}
)
Приведенная выше операция возвращает следующий результат: matchedCount указывает количество документов, соответствующих критериям, а ModifiedCount указывает количество обновленных документов.
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
Обновить один документ
Он используется для обновления одного документа. Он обновляет только первый документ в коллекции, если у нас есть более одного документа, соответствующего указанным критериям.
Синтаксис:
db.<collection_name>.updateOne(
<filter>
<update>
)
- <filter> — это документ, определяющий критерии обновления. Если фильтр соответствует более чем одному документу, метод updateOne() обновляет только первый документ. Если вы передадите пустой документ {} в метод, он обновит только первый документ коллекции.
- <update> — это документ, определяющий применяемые обновления.
Пример:
В следующем примере мы используем метод updateOne() для обновления пин-кода поля документа с помощью _id: 1. Метод updateOne() всегда будет изменять один документ.
- { _id : 1 } — это аргумент фильтра, который соответствует документам для обновления. В этом примере он соответствует документу, чей _id равен 1.
- { $set : {“pincode” : “1111111”} } указывает изменение, которое необходимо применить. Он использует оператор $set, чтобы установить значение поля пин-кода на 1111111.
db.employee_details_contact.updateOne(
{“_id” : 1},
{
$set : {“pincode” : “1111111”}
}
)
Приведенная выше операция возвращает следующий результат: matchedCount указывает количество документов, соответствующих критериям, а ModifiedCount указывает количество обновленных документов.
{ “acknowledged” : true, “matchedCount” : 1, “modifiedCount” : 1 }
Обновить многие документы
Он используется для обновления всех документов в коллекции, соответствующих заданным критериям. Это похоже на метод обновления, когда мы используем опцию «multi: true».
Синтаксис:
db.<collection_name>.updateMany(
<filter>
<update>
)
- <фильтр> — это документ, определяющий условие выбора документа для обновления. Если вы передадите пустой документ ({}) в метод updateMany(), он обновит все документы.
- <update> — это документ, определяющий применяемые обновления.
Пример:
В следующем примере мы используем метод updateMany() для обновления поля оклада документа с зарплатой: 20000. Этот метод используется для обновления всех документов, которые удовлетворяют указанным критериям.
- {“salary”:20000 } — это аргумент фильтра, соответствующий документам, которые необходимо обновить. В этом примере он соответствует всем документам, чья «зарплата»: 20000.
- { $set: {“salary”:85000 } } определяет применяемое изменение. Он использует оператор $set, чтобы установить значение поля зарплаты на 85000.
db.employee_details.updateMany(
{“salary”:20000 },
{
$set: {“salary”:85000 }
}
)
Приведенная выше операция возвращает следующий результат: matchedCount указывает количество документов, соответствующих критериям, а ModifiedCount указывает количество обновленных документов.
{ “acknowledged” : true, “matchedCount” : 5, “modifiedCount” : 5 }