Proposition: MongoDB-Abfrage bei einseitigem Referencing

Es sei folgende Modellierung gegeben:

Unter Zuhilfenahme der folgenden Abfrage erhalten wir alle Bestellungen zu der Kundennummer 42 (inklusive allen beinhalteten Produkten sowie dem jeweiligen Bestelldatum).

Hierzu:

  • suchen wir alle Einträge mit custId=42 aus der Order-Collection,
  • holen über ein Lookup alle Einträge aus der Orderline-Collection, deren orderId mit der orderId der jeweiligen order übereinstimmt
  • und wählen schließlich via $project die beiden Felder orderDate aus der order sowie productId aus der orderline aus. Das Feld _id ignorieren wir.
// MongoDB
// Ausgabe Bestellungen (Produkte, Bestelldatum)
// des Kunden mit der Kundennummer 42
db.Order.aggregate([
	{
		"$match": {
			"custId": 42
		}
	},
	{
		"$lookup": {
			"from": "Orderline",
			"localField": "orderId",
			"foreignField": "orderId",
			"as": "orderlines"
		}
	},
	{
		"$project" : {
			"_id": 0,
			"orderDate": 1,
			"orderlines.productId": 1
		}
	}
]);