Mongodb aggregate $match, $and, $or in PHP

[Sorry, Dutch Only] MongoDB! Sinds ik er mee begonnen ben, ben ik er niet meer mee te stoppen.

Okay… je kan je afvragen of het ten alle tijden MySQL zal vervangen, maar iknben in korte tijd echt Fan geworden van Mongodb.

Maar de overstap van MySQL Queries naar Aggregate functions is wel evennwennen.

Voor één van mijn sites ben nogal aan het stuntelen geweest met de queries (wat aggregation heet). En er is ook nog nietnheel veel over te vinden, dus dacht ik laat ik het eens delen met mijn medemens.

MongoDB {#mongodb}

MongoDB is een opensource document-georiënteerde database en is geschreven in C++. Er is geen schema, de documenten worden in de vorm van BSON (binair JSON) opgeslagen en de structuur van deze documenten is flexibel. De database kan gemakkelijk gedistribueerd worden, de data wordt dan over meerdere computers verspreid om gedistribueerde gegevensverwerking mogelijk te maken. MongoDB is geen relationeel databasemanagementsysteem, er is geen ondersteuning voor joins en voldoet ook niet aan de ACID-regels want de ondersteuning voor transacties is beperkt. MongoDB wordt gerekend tot de zogenaamde NoSQL-ndatabases.

Wikipedia

Aggregation

Om met php en MongoDB goede queries te bouwen kan je het beste met Aggregation de query bouwen.

Je bouwt dan doormiddel van array’s je query op en zo kan je diverse zaken met elkaar koppelen.

Zo kan je $match, $and, $or, $sort en $group met elkaar op wat voor manier met elkaar gebruiken.

In de hoofdstukken hier onder laat ik je zien hoe je per onderdeel apart en gecombineerd de functions kan gebruiken.

$match

Met $match kan je binnen je mongodb een (aggregate) selectie maken op ‘veld’-niveau

$match en $and

Maak een (aggregate) selectie op twee verschillende velden via $and

$match en $or

De één of de ander via een (aggregate) selectie op twee verschillende velden via $or

$match en $or en $and

Een (aggregate) selectie op 3 velden met $and en $or, dus een combinatie vanntwee velden of een ander veld.

$match en $in

Maak een (aggregate) selectie op één veld met meerdere waarden. Dit doe je door gebruik van $in en een array met waarden

Vergelijkingen maken met $gt $gte $lt $lte $ne

Er zijn via de aggregation (selectie) diverse manieren om vergelijkingen te maken. Je had al de $IN manier om te vergelijken met een array met waarden. Maar je hebt ook de volgende nog.

  • $gt — groter
  • $gte — groter of gelijk
  • $lt — kleiner
  • $lte — kleiner of gelijk
  • $ne — ongelijk aan

Hieronder een voorbeeld van een vergelijking met $gte

En hier nog een vergelijking met $gte en $lte om een between de doen bij een datum

Nou… ik zou zeggen voldoende voorbeelden moet je voorlopig wel weer even opweg helpen.. toch?

Mocht je nog vragen hebben aarzel niet om contact met mij op te nemen!

Did you find this article valuable?

Support Theo van der Sluijs by becoming a sponsor. Any amount is appreciated!