ऐसा करने के कुछ तरीके हैं।
var TaskSchema = new Schema({
name : String,
lastPerformed : Date,
folder : String,
user : Schema.ObjectId
});
तो फिर तुम बस सुनिश्चित करें कि आपके एप्लिकेशन कि आईडी लेखन और प्रश्नों में इसका उपयोग करने के रूप में आवश्यक "संबंधित" डाटा को लाना है बनाने के लिए है: सरल सिर्फ इस है।
यह ठीक है जब उपयोगकर्ता आईडी से कार्य खोज, लेकिन अधिक बोझिल काम आईडी से उपयोगकर्ता की क्वेरी जब है:
// Get tasks with user id
Task.find({user: user_id}, function(err, tasks) {...});
// Get user from task id
Task.findById(id, function(err, task) {
User.findById(task.user, function(err, user) {
// do stuff with user
}
}
एक और तरीका है नेवला के populate सुविधा का लाभ लेने के लिए आपके प्रश्नों को आसान बनाने के लिए है। इस के लिए, आप निम्न कर सकता है:
var UserSchema = new Schema({
name : String,
app_key : String,
app_secret : String,
tasks : [{type: Schema.ObjectId, ref: 'Task'}] // assuming you name your model Task
});
var TaskSchema = new Schema({
name : String,
lastPerformed : Date,
folder : String,
user : {type: Schema.ObjectId, ref: 'User'} // assuming you name your model User
});
इस के साथ
, सभी उपयोगकर्ताओं के लिए आपकी क्वेरी, उनके कार्यों की सारणियों सहित हो सकता है:
User.find({}).populate('tasks').run(function(err, users) {
// do something
});
बेशक
, इसका मतलब है में आईडी को बनाए रखने दोनों स्थान। यदि यह आपको परेशान करता है, तो पहली विधि से चिपकना सबसे अच्छा हो सकता है और केवल अधिक जटिल (लेकिन अभी भी पर्याप्त सरल) प्रश्न लिखने के लिए उपयोग किया जा सकता है।
क्या आप दो संग्रहों के बीच शामिल हो रहे हैं या आप उन्हें कार्य के शीर्ष पर स्टोर करना चाहते हैं? विस्तृत उत्तर के लिए –