У меня сейчас три коллекции: artists
, albums
и users
. У каждого пользователя есть список альбомов, которые ему «нравятся», и я просто пытаюсь настроить запрос (или конвейер агрегации), который бы возвращал логическое значение, нравится ли конкретному пользователю альбом. Коллекции выглядят так:
Художники
{
"_id" : ObjectId("5e2b5c922e1843a8ed16df3b"),
"name" : "Death Grips",
"formed" : "21 Dec 2010",
"members" : [
"Stefan Burnett",
"Zach Hill",
"Andy Morin"
],
"based_in" : "Sacramento, CS, United States",
"genres" : [
"Experimental Hip Hop",
"Industrial Hip Hop",
"Abstract Hip Hop",
"Hardcore Hip Hop",
"Glitch Hop",
"Noise Rock"
]
}
Альбомы
{
"_id" : ObjectId("5e2c41a4dce5f62fb2488ed8"),
"artist" : ObjectId("5e2b5c922e1843a8ed16df3b"),
"title" : "The Money Store",
"release_date" : "24 April 2012",
"image" : "5e2b9fd5b9be486f427f8331.jpg",
"rating" : 3.96,
"genres" : [
"Experimental Hip Hop",
"Industrial Hip Hop",
"Abstract Hip Hop",
"Hardcore Hip Hop",
"Glitch Hop",
"Noise Rock"
],
"descriptors" : [
"aggressive",
"angry",
"energetic",
"manic",
"noisy",
"nihilistic"
],
"lang" : "English",
"track_listing" : [
"Get Got",
"The Fever",
"Lost Boys",
"Black Jack",
"Hustle Bones",
"I've Seen Footage",
"Double Helix",
"System Blower",
"The Cage",
"Punk Weight",
"Fuck That",
"Bitch Please",
"Hacker"
]
}
Пользователи
{
"_id" : ObjectId("5e2c610157053b19fb28ee4e"),
"username" : "stackoverflow_user",
"liked_albums" : [
"5e2c41a4dce5f62fb2488ed8"
]
}
И это то, что я пытаюсь делать:
albums = col.aggregate([
{
"$lookup":{
"from": "artists",
"localField": "artist",
"foreignField": "_id",
"as": "artist"
}
}, ...something that would return true
if the a user with a particular id
likes that album.
Это приблизительный запрос возврата, который я хочу выполнить с пользователем ObjectId("5e2c610157053b19fb28ee4e")
:
{
"_id" : ObjectId("5e2c41a4dce5f62fb2488ed8"),
"artist" : {
"_id" : ObjectId("5e2b5c922e1843a8ed16df3b"),
"name" : "Death Grips",
"formed" : "21 Dec 2010",
"members" : [
"Stefan Burnett",
"Zach Hill",
"Andy Morin"
],
"based_in" : "Sacramento, CS, United States",
"genres" : [
"Experimental Hip Hop",
"Industrial Hip Hop",
"Abstract Hip Hop",
"Hardcore Hip Hop",
"Glitch Hop",
"Noise Rock"
]
},
"title" : "The Money Store",
"release_date" : "24 April 2012",
"image" : "5e2b9fd5b9be486f427f8331.jpg",
"rating" : 3.96,
"genres" : [
"Experimental Hip Hop",
"Industrial Hip Hop",
"Abstract Hip Hop",
"Hardcore Hip Hop",
"Glitch Hop",
"Noise Rock"
],
"descriptors" : [
"aggressive",
"angry",
"energetic",
"manic",
"noisy",
"nihilistic"
],
"lang" : "English",
"track_listing" : [
"Get Got",
"The Fever",
"Lost Boys",
"Black Jack",
"Hustle Bones",
"I've Seen Footage",
"Double Helix",
"System Blower",
"The Cage",
"Punk Weight",
"Fuck That",
"Bitch Please",
"Hacker"
],
"liked": true
}
Спасибо!