diff --git a/Mongo/Mongo.md b/Mongo/Mongo.md index d01791b..f62e2eb 100644 --- a/Mongo/Mongo.md +++ b/Mongo/Mongo.md @@ -14,6 +14,7 @@ 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() @@ -30,4 +31,53 @@ 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 - определяет условие, которым должны соответсвовать элементы в массиве