This repository has been archived on 2024-08-23. You can view files and clone it, but cannot push or open issues or pull requests.
lessons/Mongo/Mongo.md
2024-07-07 12:03:14 +03:00

84 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MongoDB
## Установка
Воспользуйтесь докером, бога ради
## Команды
```js
use test
db.users.insertOne({name: "Nick", languages: ["eng", "ger"]})
db.users.insertMany([{name: "Nick"}, {name: "Bob"}])
db.users.insertOne({name: "Alex", company: {
name: "Microsoft",
country: "USA"
}})
db.users.insertOne({name: "Bob Jr", courses: [{name: "Mongo", grade: 3}, {name: "postgres", grade:5}]})
load("/users.js") // Выполняет все опреции из файла
db.users.find()
db.users.findOne()
db.users.find({name: "Bob", languages: null}) // Вывести всех Бобов без языка
db.users.find({languages: ["eng", "ger"]}) // Есть английский и немецкий в таком порядке
db.users.find({"languages.0": "eng"}) // eng на первом месте
db.users.find({}, {name: 1}) // Вывести только имя и _id
db.users.find({}, {name: true, _id: false}) // Вывести всё кроме name и _id
// true == 1 && false == 0
db.users.find({"company.name": "Microsoft"})
db.users.find().skip(2).limit(3)
db.users.find().sort({name: 1})
db.users.find().sort({$natural: -1}).limit(5) // Последние 5 документов
db.users.find({}, {languages: {$slice: 1}}) // 1 первый элемент
db.users.find({}, {languages: {$slice: -1}}) // 1 последний элемент
db.users.find({}, {languages: {$slice: [-1, 2]}}) // Вернуть последний и первый элементы. Первый - сколько скипнуть, второй - сколько взять
db.users.find().count() // Кол-во элементов
db.users.find().skip(2).count(true) // Если используем skip или limit передаём в count true
db.users.distinct("name") // Список уникальных имён
db.users.find({age: {$gt: 30, $lt: 50}})
db.users.find({age: {$in: [22, 32]}});
db.users.find({$or: [name: "Nick", age:22]})
db.users.find({languages: {$all: ["eng", "ger"]}}) // Найти всех пользователей, у которых есть и eng, и ger в языках (могут быть ещё). Порядок не важен
db.users.find({courses: {$elemMatch: {name: "Mongo", grade: {$gt: 2}}}}) // Все пользователи у которых есть курс по монго с оценкой выше 2
db.users.find({courses: {$size: 2}}) // Все пользователи с 2 курсами
db.users.find({name: {$exists: true}})
db.users.find({name: {$type: "string"}})
db.users.find({name: {$regex: "om$"}})
db.users.replaceOne({name: "Tom"}, {name: "Bob", age: 2}, {upsert: true}) //Полностью заменяет документ. Если upsert true, то документ будет создан, если не найдёт
db.users.updateOne({name: "Tom"}, {$set: {salary: 300}, $inc: {age: 2}})
```
## Курсоры
```js
var cursor = db.users.find()
while(cursor.hasNext()) {
print(cursor.next().name);
}
db.users.find().forEach(user => print(user.name));
cursor = db.users.find();
cursor.limit(5);null; // Поставить лимит без вывода данных
```
## Условные операторы
* $eq
* $ne
* $gt
* $lt
* $gte
* $lte
* $in
* $nin
* $or
* $and
* $not
* $nor
## Поиск по массивам
* $all - определяет набор значений, все из которых должны быть в массиве
* $size - орпделяет кол-во элементов
* $elemMatch - определяет условие, которым должны соответсвовать элементы в массиве