मैं games
की अवधारणा को मॉडल करने की कोशिश कर रहा हूं जहां teams
players
मोंगोडीबी में एक दूसरे के खिलाफ प्रतिस्पर्धा करता है।MongoDB: उप-दस्तावेज़ आईडी द्वारा कैसे खोजें?
मेरे पास दो संग्रह हैं: players
और games
।
इस प्रकार games
में एक दस्तावेज़ जैसा दिखता है।
{
"_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,
}
]
}
]
}
यहां कार्य है: एक खिलाड़ी आईडी दिया गया है, जिसमें मैं इस गेम में भाग लेने वाले सभी गेम ढूंढना चाहता हूं।
मैं क्या कोशिश की है:
db.games.find({ "teams.players.player._id": "2" })
बहरहाल, यह कुछ भी वापस नहीं करता है। निम्नलिखित CoffeeScript क्वेरी के साथ
playerSchema = Schema
player: { type: Schema.ObjectId, ref: 'Player' }
score: { type: Number }
teamSchema = Schema
players: [ playerSchema ]
gameSchema = Schema
teams: [ teamSchema ]
:
वैसे, मैं निम्नलिखित स्कीमा के साथ नेवला उपयोग कर रहा हूँ
Game.find 'teams.players.player._id': playerId
जो किसी भी खिलाड़ी आईडी के लिए कोई परिणाम देता है।
यदि आप सोचते हैं कि स्कीमा को बेहतर तरीके से डिज़ाइन किया जा सकता है, तो मुझे कुछ पॉइंटर्स भी मिलना अच्छा लगेगा! –
क्या आप दो टीमों, या दो से अधिक चाहते हैं? मैं दो टीमों के लिए एक सभ्य उदाहरण दे सकता हूं लेकिन अधिक टीमें थोड़ी अधिक कठिन हैं और खोज उद्देश्यों के लिए अतिरिक्त फ़ील्ड शामिल हैं। –
यह सिर्फ दो टीमें है। धन्यवाद! –