Pets & Owners sample data:
db.pets.insertMany([
{
_id: "1",
pet_name: "juice",
breed: "maltese",
age: 11,
sex: "female",
personality: "friendly",
type: "dog",
owner_id: "1"
},
{
_id: "2",
pet_name: "squack",
breed: "parakeet",
age: 4,
sex: "male",
personality: "loud",
type: "bird",
owner_id: "2"
},
{
_id: "3",
pet_name: "bobby",
breed: "pigeon",
age: 2,
sex: "female",
personality: "energetic",
type: "bird",
owner_id: "2"
},
{
_id: "4",
pet_name: "whalina",
breed: "blue",
age: 23,
sex: "female",
weight: 187000,
type: "whale",
owner_id: "3"
},
{
_id: "5",
pet_name: "Hershey",
breed: "boxer",
age: 3,
sex: "male",
personality: "playful",
type: "dog",
owner_id: "1",
},
{
_id: "6",
pet_name: "squeek",
breed: "siamese",
age: 15,
sex: "male",
weight: 2,
type: "cat",
owner_id: "2",
},
{
_id: "7",
pet_name: "kipper",
breed: "greyhound",
age: 5,
sex: "male",
neutered: true,
type: "dog",
owner_id: "1"
},
{
_id: "8",
pet_name: "noki",
breed: "short-haired persian",
age: 3,
sex: "female",
type: "cat",
owner_id: "3"
},
{
_id: "9",
pet_name: "pooki",
age: 3,
sex: "female",
owner_id: "1"
},
{
_id: "10",
pet_name: "snooki",
age: 5,
sex: "male",
owner_id: "2"
},
{
_id: "11",
pet_name: "wooki",
age: 4,
sex: "male",
owner_id: "1"
}
])
///// Insert OWNERS //////////////
db.owners.insertOne({_id: "1", name: "Joe", gender: "male", age: 15, occupation: "Lawn Mower"});
db.owners.insertOne({_id: "2", name: "Joanna", gender: "female", age: 27, occupation: "Landscaper"});
db.owners.insertOne({_id: "3", name: "Tom", gender: "male", age: 41, occupation: "Lawyer"});
Commands to setup one to many query:
db.owners.aggregate(
[
{
$lookup:
{
from: "pets",
localField: "_id",
foreignField: "owner_id",
as: "owners_pets"
}
}
]
)
/// remove fields not needed:
db.owners.aggregate(
[
{
$lookup:
{
from: "pets",
localField: "_id",
foreignField: "owner_id",
as: "owners_pets"
}
},
{
$unset: ["gender", "age", "owners_pets.sex", "owners_pets.breed", "owners_pets.age"]
}
]
)