MongoDB
Zapytanie o dane (pierwsze kroki)
Szukaj…
Wprowadzenie
Podstawowe przykłady zapytań
Odnaleźć()
pobierz wszystkie dokumenty z kolekcji
db.collection.find({});
pobieranie dokumentów w kolekcji przy użyciu warunku (podobnie do GDZIE w MYSQL)
db.collection.find({key: value});
example
db.users.find({email:"[email protected]"});
pobieranie dokumentów z kolekcji przy użyciu warunków boolowskich (operatory zapytań)
//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 } } )
więcej operacji boolowskich i przykłady można znaleźć tutaj
UWAGA: find () będzie nadal przeszukiwał kolekcję, nawet jeśli znaleziono dopasowanie dokumentu, dlatego jest nieefektywny, gdy jest używany w dużej kolekcji, jednak przez dokładne modelowanie danych i / lub użycie indeksów można zwiększyć efektywność find ( )
FindOne ()
db.collection.findOne({});
funkcja zapytań jest podobna do find (), ale zakończy działanie, gdy tylko znajdzie jeden dokument spełniający jego warunek, jeśli zostanie użyty z pustym obiektem, pobierze pierwszy dokument i zwróci go. findOne () dokumentacja interfejsu API mongodb
Dokument zapytania - przy użyciu warunków AND, OR i IN
Wszystkie dokumenty z kolekcji 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
}
Podobne zapytanie
mySql
powyższego polecenia.SELECT * FROM students;
db.students.find({firstName:"Prosen"});
{ "_id" : ObjectId("58f2547804951ad51ad206f5"), "studentNo" : "1", "firstName" : "Prosen", "lastName" : "Ghosh", "age" : "23" }
Podobne zapytanie
mySql
powyższego polecenia.SELECT * FROM students WHERE firstName = "Prosen";
I zapytania
db.students.find({
"firstName": "Prosen",
"age": {
"$gte": 23
}
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Podobne zapytanie
mySql
powyższego polecenia.SELECT * FROM students WHERE firstName = "Prosen" AND age >= 23
Lub zapytania
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 }
Podobne zapytanie
mySql
powyższego polecenia.SELECT * FROM students WHERE firstName = "Prosen" OR age >= 23
I LUB zapytania
db.students.find({
firstName : "Prosen",
$or : [
{age : 23},
{age : 25}
]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Podobne zapytanie mySql powyższego polecenia.
SELECT * FROM students WHERE firstName = "Prosen" AND age = 23 OR age = 25;
Zapytania IN Te zapytania mogą poprawić wielokrotne użycie zapytań 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 }
Podobne zapytanie mySql do powyższego polecenia
select * from students where lastName in ('Ghosh', 'Amin')
metoda find () z Projekcją
Podstawowa składnia metody find()
z rzutowaniem jest następująca
> db.COLLECTION_NAME.find({},{KEY:1});
Jeśli chcesz wyświetlić wszystkie dokumenty bez pola wieku, polecenie jest następujące
db.people.find({},{age : 0});
Jeśli chcesz wyświetlić wszystkie dokumenty w polu wieku, polecenie jest następujące
Metoda Find () z Projekcją
W MongoDB projekcja oznacza wybranie tylko niezbędnych danych zamiast wybierania całych danych dokumentu.
Podstawowa składnia metody find()
z rzutowaniem jest następująca
> db.COLLECTION_NAME.find({},{KEY:1});
Jeśli chcesz pokazać cały dokument bez pola wieku, polecenie jest następujące
> db.people.find({},{age:0});
Jeśli chcesz wyświetlić tylko pole wieku, polecenie jest następujące
> db.people.find({},{age:1});
Uwaga: pole _id
jest zawsze wyświetlane podczas wykonywania metody find()
, jeśli nie chcesz tego pola, musisz ustawić je na 0
.
> db.people.find({},{name:1,_id:0});
Uwaga: 1
służy do wyświetlania pola, a 0
do ukrywania pól.
ogranicz, pomiń, posortuj i policz wyniki metody find ()
Podobnie jak w przypadku metod agregacji, również metodą find () masz możliwość ograniczenia, pomijania, sortowania i liczenia wyników. Powiedzmy, że mamy następującą kolekcję:
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"}
])
Aby wyświetlić listę kolekcji:
db.test.find({})
Wróci:
{ "_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" }
Aby pominąć pierwsze 3 dokumenty:
db.test.find({}).skip(3)
Wróci:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Aby posortować malejąco według nazwy pola:
db.test.find({}).sort({ "name" : -1})
Wróci:
{ "_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" }
Jeśli chcesz sortować rosnąco, po prostu zamień -1 na 1
Aby policzyć wyniki:
db.test.find({}).count()
Wróci:
5
Dopuszczalne są również kombinacje tych metod. Na przykład pobierz 2 dokumenty z malejącej sortowanej kolekcji pomijając pierwszą 1:
db.test.find({}).sort({ "name" : -1}).skip(1).limit(2)
Wróci:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }