Cấu trúc dữ liệu của bạn khó truy vấn vì bạn có một mảng tài liệu nhúng. Với một chút thay đổi đối với dữ liệu, bạn có thể làm cho việc này dễ dàng hơn.
Tôi đã đặt các ID người dùng vào một mảng:
{
"contestname": "Contest1",
"description": "java programming contest",
"numteams": 2,
"teams": [
{
"teamname": "superstars",
"members": [
"50247314f501384b011019bc",
"50293cf9f50138446411001c",
"50293cdff501384464110018"
]
},
{
"teamname": "faculty",
"members": [
"50247314f501384b0110100c",
"50293cf9f50138446410001b",
"50293cdff501384464000019"
]
}
],
"term": "Fall 2012"
}
Sau đó, bạn có thể thực hiện find () tương đương PHP cho:
db.contest.find(
{'teams.members':'50247314f501384b011019bc'},
{'contestname':1, 'description':1}
)
Điều này sẽ trả về các cuộc thi phù hợp mà người dùng này đã tham gia:
{
"_id" : ObjectId("502c108dcbfbffa8b2ead5d2"),
"contestname" : "Contest1",
"description" : "java programming contest"
}
{
"_id" : ObjectId("502c10a1cbfbffa8b2ead5d4"),
"contestname" : "Contest3",
"description" : "Grovy programming contest"
}