MongoDB
Gegevens opvragen (Aan de slag)
Zoeken…
Invoering
Eenvoudige voorbeelden van zoekopdrachten
Vind()
haal alle documenten in een verzameling op
db.collection.find({});
documenten in een verzameling ophalen met een voorwaarde (vergelijkbaar met WHERE in MYSQL)
db.collection.find({key: value});
example
db.users.find({email:"[email protected]"});
documenten ophalen in een verzameling met behulp van Booleaanse voorwaarden (Queryoperators)
//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 } } )
meer booleaanse bewerkingen en voorbeelden zijn hier te vinden
OPMERKING: find () blijft de collectie doorzoeken, zelfs als een documentovereenkomst is gevonden, daarom is het inefficiënt bij gebruik in een grote collectie, maar door uw gegevens zorgvuldig te modelleren en / of indexen te gebruiken, kunt u de efficiëntie van zoeken vergroten ( )
Vind een()
db.collection.findOne({});
de queryfunctionaliteit is vergelijkbaar met find (), maar hiermee wordt de uitvoering beëindigd op het moment dat een document wordt gevonden dat aan zijn voorwaarde voldoet. Als het wordt gebruikt met een leeg object, wordt het eerste document opgehaald en geretourneerd. findOne () mongodb api-documentatie
Query Document - AND, OR en IN voorwaarden gebruiken
Alle documenten uit de 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
}
Soortgelijke
mySql
Query van de bovenstaande opdracht.SELECT * FROM students;
db.students.find({firstName:"Prosen"});
{ "_id" : ObjectId("58f2547804951ad51ad206f5"), "studentNo" : "1", "firstName" : "Prosen", "lastName" : "Ghosh", "age" : "23" }
Soortgelijke
mySql
Query van de bovenstaande opdracht.SELECT * FROM students WHERE firstName = "Prosen";
EN vragen
db.students.find({
"firstName": "Prosen",
"age": {
"$gte": 23
}
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Soortgelijke
mySql
Query van de bovenstaande opdracht.SELECT * FROM students WHERE firstName = "Prosen" AND age >= 23
Of vragen
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 }
Soortgelijke
mySql
Query van de bovenstaande opdracht.SELECT * FROM students WHERE firstName = "Prosen" OR age >= 23
En OF vragen
db.students.find({
firstName : "Prosen",
$or : [
{age : 23},
{age : 25}
]
});
{ "_id" : ObjectId("58f29a694117d1b7af126dca"), "studentNo" : 1, "firstName" : "Prosen", "lastName" : "Ghosh", "age" : 25 }
Soortgelijke mySql Query van de bovenstaande opdracht.
SELECT * FROM students WHERE firstName = "Prosen" AND age = 23 OR age = 25;
IN-query's Deze query's kunnen meervoudig gebruik van OF-query's verbeteren
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 }
Soortgelijke mySql-zoekopdracht als bovenstaande opdracht
select * from students where lastName in ('Ghosh', 'Amin')
find () methode met Projection
De basissyntaxis van de methode find()
met projectie is als volgt
> db.COLLECTION_NAME.find({},{KEY:1});
Als u alle documenten zonder het leeftijdsveld wilt weergeven, is de opdracht als volgt
db.people.find({},{age : 0});
Als u alle documenten het leeftijdsveld wilt tonen, is de opdracht als volgt
Find () methode met Projection
In MongoDB betekent projectie alleen het selecteren van de benodigde gegevens in plaats van het selecteren van alle gegevens van een document.
De basissyntaxis van de methode find()
met projectie is als volgt
> db.COLLECTION_NAME.find({},{KEY:1});
Als u alle documenten zonder het leeftijdsveld wilt weergeven, is de opdracht als volgt
> db.people.find({},{age:0});
Als u alleen het leeftijdsveld wilt weergeven, is de opdracht als volgt
> db.people.find({},{age:1});
Opmerking: het veld _id
wordt altijd weergegeven tijdens het uitvoeren van de methode find()
. Als u dit veld niet wilt, moet u het instellen als 0
.
> db.people.find({},{name:1,_id:0});
Opmerking: 1
wordt gebruikt om het veld te tonen, terwijl 0
wordt gebruikt om de velden te verbergen.
de resultaten van de methode find () beperken, overslaan, sorteren en tellen
Vergelijkbaar met aggregatiemethoden, ook met de methode find (), kunt u de resultaten beperken, overslaan, sorteren en tellen. Laten we zeggen dat we de volgende verzameling hebben:
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"}
])
Om de verzameling te vermelden:
db.test.find({})
Zal terugkomen:
{ "_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" }
De eerste 3 documenten overslaan:
db.test.find({}).skip(3)
Zal terugkomen:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }
Aflopend sorteren op veldnaam:
db.test.find({}).sort({ "name" : -1})
Zal terugkomen:
{ "_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" }
Als je oplopend wilt sorteren, vervang je -1 door 1
Om de resultaten te tellen:
db.test.find({}).count()
Zal terugkomen:
5
Ook combinaties van deze methoden zijn toegestaan. Haal bijvoorbeeld 2 documenten uit aflopende gesorteerde verzameling waarbij de eerste 1 wordt overgeslagen:
db.test.find({}).sort({ "name" : -1}).skip(1).limit(2)
Zal terugkomen:
{ "_id" : ObjectId("592516d7fbd5b591f53237b3"), "name" : "Sonny", "age" : "28", "status" : "away" }
{ "_id" : ObjectId("592516d7fbd5b591f53237b4"), "name" : "Cher", "age" : "20", "status" : "online" }