===== список комманд ===== //=//=// Основы db.auth('admin-user', 'admin-password') db = db.getSiblingDB('test-database') db.createUser({ user: 'test-user', pwd: 'test-password', roles: [ { role: 'root', db: 'test-database', }, ], }); // Показать базы данных show dbs // Создать базу данных people use people // Текущая база данных db // Показать коллекции в текущей базе данных show collections // Добавление документа в коллекцию doc = { name: "Smith", age: 30, profession: "hacker" }; db.people.insert(doc); // В одну строку db.people.insert({ name: "Jones", age: 25, profession: "designer" }) // Получить все документы из коллекции people db.people.find(); // Получить один, случайный документ из коллекции people db.people.findOne(); //=//=// Запросы // Получить документ из коллекции people, с полем "name" равным "Jones" db.people.findOne({ "name": "Jones" }); // Первый аргумент: что найти // Второй аргумент: что получить из базы данных. // Поле "_id" всегда присутствует по умолчанию, // поэтому чтобы получить только профессию, необходимо явно указать что поле _id не нужно db.people.findOne({ "name": "Jones"}, { "profession": true, "_id": false }); // Из консоли mongodb можно выполнять практически любой javascript код for (i = 0; i < 1000; i++) { names = ["exam", "essay", "quiz"]; for (j = 0; j < 3; ++j) { db.scores.insert({"student": i, "type": names[j], "score": Math.round(Math.random() * 100)}); } } // Получить все документы и вывести в читаемом виде db.scored.find().pretty(); // Получить оценки всех эссе 19-го студента db.scores.find({ student: 19, type: "essay" }, { "score": true, "_id": false }); // Использование $gt, $lt, $gte, $lte // Получить документы с оценкой выше 95 db.scores.find({ score: { $gt: 95 }}); // Получить эссе с оценкой выше 95 и ниже, либо равной 98 db.scores.find({ score : { $gt : 95, $lte: 98 }, type : "essay" }); // Можно использовать со строками, строки сравниваются в лексикографическом порядке db.scores.find({ name: { $lt : "D", $gt "B" }}); // Использование $exists и $type // Найти документы, которые содержат поле profession db.people.find({ profession : { $exists: true }}); // в которых отсутствует поле profession db.people.find({ profession : { $exists: false }}); // Найти документы, в которых name является строкой // Типы закодированы числами (https://docs.mongodb.org/v3.0/reference/operator/query/type/) db.people.find( {name : { $type : 2 }}); // Найти докменты с помощью регулярного выражения db.people.find( {name: { $regex : 'o' }}); //=//=// Логические операторы // Использование $or // Найти документы, заканчивающиеся на "e", или содержащие поле "age" db.people.find({ $or: [{ name: { regex: 'e$' }}, { age: { $exists: true }}]}); // Использование $and // Найти документы, name в которых лексиграфически больше "c" и содержит "a" db.people.find({ $and: [{ name: { $gt: 'c' }}, {name: { $regex: 'a' }}]}); // то же самое db.people.find({ name: {$gt: 'c', $regex: 'a'}}); //=//=// Запросы внутри массивов // Добавляем документы db.accounts.insert({ name: "Howard", favorites: [ "pretzels", "beer" ]}); db.accounts.insert({ name: "George", favorites: [ "ice cream", "pretzels" ]}); // Если поле запроса является массивом, поиск будет выполнен и внутри массива db.accounts.find( { favorites: "pretzels" }) // Использование $in и $all // $all - массив должен содержать все указанные элементы, порядок неважен db.accounts.find({ favorites: { $all: [ "pretzels", "beer" ]}}); // $in - Документ должен содержать один из указанных элементов db.accounts.find({ favorites: { $in: [ "ice cream", "beer" ]}}); // Запросы с использованием dot notation // Добавляем документ со сложной структурой db.users.insert({ name: "richard", email: { work: "richard@mail.com", personal: "kreuter@example.com" }}); // Получаем документ используя dot notation, запрашиваемое поле необходимо заключать в кавычки db.users.find({ 'email.work': "richard@mail.com" }); // Использование курсоров var cur = db.people.find(); cur.hasNext(); cur.next(); // получить 3 документа cur.limit(3); // Подсчет документов db.scores.count({ type: 'exam' }); //=//=// Обновление документов // Первый аргумент - что найти // Второй аргумент - на что заменить // Предыдущая версия документа при этому будет потеряна db.people.update({ name: 'Smith'}, { name: 'Thompson', salary : 25 }); // $set обновляет необходимые поля в документе, не теряя при этом остальне поля // если такого поля небыло, создает его db.people.update( { name: "Alice" }, { $set: { age: 30 }}); // $inc инкреметирует поле документа, // если такого поля не было будет создано новое поле со значением инкремента. db.peiple.update( {name: "Alice" }, { $inc: { age: 1 }}); // $unset удаляет поле из документа // Значение указываемое после удаляемого аргумента не имеет значения, // просто необходимо любое значение. В данном случае "1". db.people.update({ name: "Jones" }, { $unset: { profession : 1 }}); // Параметр upsert: true обновит найденный документ, // если документы удовлетворяющие запросу отсутствуют будет создан новый документ db.people.update({ name: "George" }, { name: "George", age: 40 }, { upsert : true }); // Множественное обновление // { } - пустое условие, т.е. выбрать каждый элемент в коллекции // Параметр multi: true говорит обновить все документы удовлетворяющие запросу, // без данного параметра будет обновлен только один документ db.people.update( { }, { $set: { title : "Dr" }}, { multi : true }); //=//=// Манипулирование массивами // Добавляем документ, содержащий массив db.arrays.insert({ _id: 0 , a : [1, 2, 3, 4, 5]}); // $set изменяет значение отдельного элемента массива по индексу db.arrays.update({ _id: 0 }, { $set: { "a.2": 5 }}); // $push добавляет новый элемент к массиву db.arrays.update({ _id: 0 }, { $push: { a: 6 }}); // $pop удаляет последний элемент массива db.arrays.update({ _id: 0 }, { $pop: { a: 1 }}); // $pop с отрицательным аргументов удаляет первый элемент массива db.arrays.update({ _id: 0 }, { $pop : { a : -1 }}); // $pushAll добавление нескольких элементов в массив db.arrays.update({ _id: 0 }, { $pushAll: { a: [ 7, 8, 9 ] }}); // $pull удаляет любой элемент из массива, в данном случае удаляет число 5 db.arrays.update({ _id: 0 }, { $pull: { a: 5 }}); // $pullAll удаляет все указанные элементы из массива db.arrays.update({ _id: 0 }, { $pullAll: { a: [5, 6, 7] }}); // $addToSet - добавляет элемент в массив только если в массиве нет данного элемента db.arrays.update({ _id: 0 }, { $addToSet: { a: 5 }}); //=//=// Удаление данных // remove служит для удаления данных из коллекции db.poeple.remove( {name: "Alex" }); db.people.remove( {name: { $gt : "M" }}); // Удаление всех документов из коллекции db.people.remove( { } ); // Удаление всей коллекции. db.people.drop();