MongoDB
Запрос данных (Начало работы)
Поиск…
Вступление
Основные примеры запросов
Найти()
получить все документы в коллекции
db.collection.find({});
извлекать документы в коллекции, используя условие (подобное ГДЕ в MYSQL)
db.collection.find({key: value});
example
db.users.find({email:"[email protected]"});
извлекать документы в коллекции с использованием булевых условий (операторы запросов)
//AND
db.collection.find( {
$and: [
{ key: value }, { key: value }
]
})
//OR
db.collection.find( {
$or: [
{ key: value }, { key: value }
]
})
//NOT
db.inventory.find( { key: { $not: value } } )
более логические операции и примеры можно найти здесь
ПРИМЕЧАНИЕ. Find () будет продолжать поиск в коллекции, даже если найдено совпадение с документом, поэтому оно неэффективно при использовании в большой коллекции, однако, тщательно моделируя ваши данные и / или используя индексы, вы можете повысить эффективность поиска ( )
FindOne ()
db.collection.findOne({});
функциональность запросов аналогична функции find (), но это прекратит выполнение в тот момент, когда он найдет один документ, соответствующий его условию, если используется с и пустым объектом, он будет извлекать первый документ и возвращать его. findOne () mongodb api документация
Документ запроса - использование условий AND, OR и IN
Все документы из коллекции students
.
> db.students.find().pretty();
{
"_id" : ObjectId("58f29a694117d1b7af126dca"),
"studentNo" : 1,
"firstName" : "Prosen",
"lastName" : "Ghosh",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcb"),
"studentNo" : 2,
"firstName" : "Rajib",
"lastName" : "Ghosh",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcc"),
"studentNo" : 3,
"firstName" : "Rizve",
"lastName" : "Amin",
"age" : 23
}
{
"_id" : ObjectId("58f29a694117d1b7af126dcd"),
"studentNo" : 4,
"firstName" : "Jabed",
"lastName" : "Bangali",
"age" : 25
}
{
"_id" : ObjectId("58f29a694117d1b7af126dce"),
"studentNo" : 5,
"firstName" : "Gm",
"lastName" : "Anik",
"age" : 23
}
Аналогичный
mySql
запрос указанной команды.SELECT * FROM students;
db.students.find({firstName:"Prosen"});
{ "_id" : ObjectId("58f2547804951ad51ad206f5"), "studentNo" : "1", "firstName" : "Prosen", "lastName" : "Ghosh", "age" : "23" }
Аналогичный
mySql
запрос указанной команды.SELECT * FROM students WHERE firstName = "Prosen";
И Запросы
db.students.find({
"firstName": "Prosen",
"age": {
"$gte": 23
}
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Аналогичный
mySql
запрос указанной команды.SELECT * FROM students WHERE firstName = "Prosen" AND age >= 23
Или Запросы
db.students.find({
"$or": [{
"firstName": "Prosen"
}, {
"age": {
"$gte": 23
}
}]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcd"), "studentNo" : 4, "firstName" : "Jabed", "lastName" : "Bangali", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dce"), "studentNo" : 5, "firstName" : "Gm", "lastName" : "Anik", "age" : 23 }
Аналогичный
mySql
запрос указанной команды.SELECT * FROM students WHERE firstName = "Prosen" OR age >= 23
И ИЛИ Запросы
db.students.find({
firstName : "Prosen",
$or : [
{age : 23},
{age : 25}
]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Аналогичный mySql запрос указанной команды.
SELECT * FROM students WHERE firstName = "Prosen" AND age = 23 OR age = 25;
IN Запросы Эти запросы могут улучшить многократное использование OR запросов
db.students.find(lastName:{$in:["Ghosh", "Amin"]})
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcb"), "studentNo" : 2, "firstName" : "Rajib", "lastName" : "Ghosh", "age" : 25 }
{ "_id" : ObjectId("58f29a694117d1b7af126dcc"), "studentNo" : 3, "firstName" : "Rizve", "lastName" : "Amin", "age" : 23 }
Аналогичный запрос mySql к команде выше
select * from students where lastName in ('Ghosh', 'Amin')
метод find () с проекцией
Основной синтаксис метода find()
с проекцией следующий
> db.COLLECTION_NAME.find({},{KEY:1});
Если вы хотите показать все документы без поля возраста, то команда следующая:
db.people.find({},{age : 0});
Если вы хотите показать все документы в поле возраста, тогда команда следующая:
Метод Find () с проекцией
В MongoDB проекция означает выбор только необходимых данных, а не выбор целых данных документа.
Основной синтаксис метода find()
с проекцией следующий
> db.COLLECTION_NAME.find({},{KEY:1});
Если вы хотите показать весь документ без поля возраста, то команда следующая:
> db.people.find({},{age:0});
Если вы хотите показать только возрастное поле, команда следующая:
> db.people.find({},{age:1});
Примечание. Поле _id
всегда отображается при выполнении метода find()
, если вы не хотите этого поля, тогда вам нужно установить его как 0
.
> db.people.find({},{name:1,_id:0});
Примечание: 1
используется для отображения поля, а 0
- для скрытия полей.
ограничивать, пропускать, сортировать и подсчитывать результаты метода find ()
Подобно методам агрегирования также методом find () у вас есть возможность ограничить, пропустить, отсортировать и подсчитать результаты. Скажем, мы имеем следующую коллекцию:
db.test.insertMany([
{name:"Any", age:"21", status:"busy"},
{name:"Tony", age:"25", status:"busy"},
{name:"Bobby", age:"28", status:"online"},
{name:"Sonny", age:"28", status:"away"},
{name:"Cher", age:"20", status:"online"}
])
Чтобы перечислить коллекцию:
db.test.find({})
Вернусь:
{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Пропустить первые 3 документа:
db.test.find({}).skip(3)
Вернусь:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Сортировка по имени поля:
db.test.find({}).sort({ "name" : -1})
Вернусь:
{ "_id" : ObjectId("592516d7fbd5b591f53237b1"), "name" : "Tony", "age" : "25", "status" : "busy" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b2"), "name" : "Bobby", "age" : "28", "status" : "online" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b0"), "name" : "Any", "age" : "21", "status" : "busy" }
Если вы хотите отсортировать по возрастанию, просто замените -1 на 1
Чтобы подсчитать результаты:
db.test.find({}).count()
Вернусь:
5
Также допускаются комбинации этих методов. Например, получите 2 документа из нисходящей сортированной коллекции, пропустив первый 1:
db.test.find({}).sort({ "name" : -1}).skip(1).limit(2)
Вернусь:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }