I have some data in a mongoDB collection like this. Some of it may be even more nested and have more "members" entries. I want to query the data so that I get all the "artist" entries and their "members" entries.
{
"songname": "random name",
"artist": [
{
"name": "Band A",
"members": [
{
"name": "Unit A1",
"members": [
{
"name": "Member A1",
"members": []
}
]
},
{
"name": "Unit A2",
"members": [
{
"name": "Member A2",
"members": []
}
]
},
{
"name": "Unit A3",
"members": [
{
"name": "Member A3",
"members": []
}
]
}
]
},
{
"name": "Band B",
"members": [
{
"name": "Unit A1",
"members": [
{
"name": "Member A1",
"members": []
}
]
},
{
"name": "Unit A2",
"members": [
{
"name": "Member A2",
"members": []
}
]
},
{
"name": "Unit A3",
"members": [
{
"name": "Member A3",
"members": []
}
]
}
]
}
]
}
Something like this:
{
"name": "Band A",
"members": [...]
}
{
"name": "Unit A1",
"members": [...]
}
{
"name": "Member A1",
"members": [...]
}
{
"name": "Band B",
"members": [...]
}
{
"name": "Unit B1",
"members": [...]
}
{
"name": "Member B1",
"members": [...]
}
Also, is there a way to get only a specific "artist", eg "Unit B1" and it's "members" in the same style?
You can use your collection just as you would use a nested dictionary:
collection["artist"]
will give you the result you were asking for.
To get the members of "Unit B1", we have to iterate over all artists:
for x in collection["artist"]:
if x["name"] == "Unit B1":
print(x["members"])
break
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.