In de vorige tutorials hebben we geleerd hoe criteria te gebruiken tijdens het opvragen van documenten om de geselecteerde documenten uit de verzameling te krijgen. In deze tutorial zullen we een ander interessant onderwerp van MongoDB leren kennen, namelijk MongoDB Projection . Dit wordt gebruikt wanneer we de geselecteerde velden van de documenten willen krijgen in plaats van alle velden.
We hebben bijvoorbeeld een verzameling waarin we documenten hebben opgeslagen die de velden studentnaam, student_id, student_age hebben, maar we willen alleen de student_id van alle studenten zien, in dat geval kunnen we projectie gebruiken om alleen de student_id te krijgen.
Syntaxis:
db.collection_name.find ({}, {field_key: 1 of 0})
Maak je nu geen zorgen over de syntax, we zullen een voorbeeld zien om dit te begrijpen.
MongoDB projectie voorbeeld
Laten we een voorbeeld nemen om de projectie in MongoDB te begrijpen. We hebben een verzameling met de naam studentdata
die volgende documenten heeft.
> db.studentdata.find (). pretty () { "_id": ObjectId ("59bf63380be1d7770c3982af"), "student_name": "Steve", "student_id": 2002, "studentpagina": 22 } { "_id": ObjectId ("59bf63500be1d7770c3982b0"), "student_name": "Carol", "student_id": 2003, "studentpagina": 22 } { "_id": ObjectId ("59bf63650be1d7770c3982b1"), "student_name": "Tim", "student_id": 2004, "studentpagina": 23 }
Om alleen de student_id voor alle documenten te krijgen, zullen we de projectie als volgt gebruiken:
> db.studentdata.find ({}, {"_id": 0, "student_id": 1}) {"student_id": 2002} {"student_id": 2003} {"student_id": 2004}
Waarde 1 betekent dat veld wordt weergegeven en 0 betekent dat veld niet wordt weergegeven. Wanneer we een veld instellen op 1 in Projectie, worden andere velden automatisch ingesteld op 0, behalve _id, dus om _id te vermijden moeten we dit specifiek instellen op 0 in projectie. Het omgekeerde is ook waar als we enkele velden op 0 zetten, andere velden automatisch op 1 (zie het onderstaande voorbeeld)
Een andere manier om hetzelfde te doen:
> db.studentdata.find ({}, {"_id": 0, "student_name": 0, "student_age": 0}) {"student_id": 2002} {"student_id": 2003} {"student_id": 2004}
Be>
Sommigen van u krijgen deze foutmelding tijdens het gebruik van Projection in Query:
Fout: fout: { "ok": 0, "errmsg": "Projectie kan geen combinatie van insluiting en uitsluiting bevatten.", "code": 2, "codeName": "BadValue" }
Dit gebeurt wanneer u sommige velden instelt op 0 en andere op 1, met andere woorden dat u insluiting en uitsluiting combineert, de enige uitzondering is het veld _id. bijvoorbeeld: de volgende query zou deze fout veroorzaken:
db.studentdata.find ({}, {"_id": 0, "student_name": 0, "student_age": 1})
Dit komt omdat we student_name hebben ingesteld op 0 en ander veld student_age op 1. We kunnen deze niet combineren. U kunt de velden die u niet wilt weergeven instellen op 0 of de velden instellen op 1 die u wilt weergeven.
Laat een reactie achter