Tôi đang cố gắng mô hình hóa khái niệm về games
trong đó teams
của players
cạnh tranh với nhau trong MongoDB.MongoDB: Cách tìm bằng ID tài liệu phụ?
Tôi có hai bộ sưu tập: players
và games
.
Đây là cách tài liệu trong games
trông giống như.
{
"_id": { "$oid": "1" },
"teams": [
{
"players": [
{
"player": { "$oid": "2" },
"score": 500,
},
{
"player": { "$oid": "3" },
"score": 550,
}
]
},
{
"players": [
{
"player": { "$oid": "4" },
"score": 500,
},
{
"player": { "$oid": "5" },
"score": 550,
}
]
}
]
}
Đây là nhiệm vụ: được cấp ID người chơi Tôi muốn tìm tất cả các trò chơi mà người chơi này tham gia.
Những gì tôi đã cố gắng:
db.games.find({ "teams.players.player._id": "2" })
Tuy nhiên, điều này không trả lại bất cứ điều gì.
Bằng cách này, tôi đang sử dụng Mongoose với giản đồ sau:
playerSchema = Schema
player: { type: Schema.ObjectId, ref: 'Player' }
score: { type: Number }
teamSchema = Schema
players: [ playerSchema ]
gameSchema = Schema
teams: [ teamSchema ]
với truy vấn CoffeeScript sau:
Game.find 'teams.players.player._id': playerId
mà trả không có kết quả đối với bất kỳ ID người chơi.
Nếu các bạn nghĩ rằng lược đồ có thể được thiết kế theo cách tốt hơn, tôi cũng muốn có một số gợi ý! –
Bạn có muốn hai đội, hoặc nhiều hơn hai đội không? Tôi có thể đưa ra một ví dụ tốt cho hai đội nhưng nhiều đội hơn một chút tẻ nhạt và liên quan đến các lĩnh vực bổ sung cho các mục đích tìm kiếm. –
Chỉ là hai đội. Cảm ơn! –