मेरे पास दो संग्रह हैं। पहला संग्रह छात्रों में शामिल हैं:मोंगो डीबी: कैसे पता लगाना है कि किसी सरणी फ़ील्ड में कोई तत्व है या नहीं?
{ "_id" : ObjectId("51780f796ec4051a536015cf"), "name" : "John" }
{ "_id" : ObjectId("51780f796ec4051a536015d0"), "name" : "Sam" }
{ "_id" : ObjectId("51780f796ec4051a536015d1"), "name" : "Chris" }
{ "_id" : ObjectId("51780f796ec4051a536015d2"), "name" : "Joe" }
दूसरा संग्रह पाठ्यक्रमों में शामिल हैं:
{
"_id" : ObjectId("51780fb5c9c41825e3e21fc4"),
"name" : "CS 101",
"students" : [
ObjectId("51780f796ec4051a536015cf"),
ObjectId("51780f796ec4051a536015d0"),
ObjectId("51780f796ec4051a536015d2")
]
}
{
"_id" : ObjectId("51780fb5c9c41825e3e21fc5"),
"name" : "Literature",
"students" : [
ObjectId("51780f796ec4051a536015d0"),
ObjectId("51780f796ec4051a536015d0"),
ObjectId("51780f796ec4051a536015d2")
]
}
{
"_id" : ObjectId("51780fb5c9c41825e3e21fc6"),
"name" : "Physics",
"students" : [
ObjectId("51780f796ec4051a536015cf"),
ObjectId("51780f796ec4051a536015d0")
]
}
प्रत्येक पाठ्यक्रम दस्तावेज़ students
सरणी जो पाठ्यक्रम के लिए पंजीकृत छात्रों की एक सूची है शामिल हैं। जब कोई छात्र किसी वेब पेज पर पाठ्यक्रम देखता है तो उसे यह देखने की ज़रूरत होती है कि क्या वह पहले से ही पाठ्यक्रम के लिए पंजीकृत है या नहीं। ऐसा करने के लिए, जब courses
संग्रह छात्र की ओर से पूछताछ की जाती है, तो हमें यह पता लगाना होगा कि students
सरणी में पहले से ही छात्र का ऑब्जेक्ट आईडी है। क्या छात्र ObjectId
students
सरणी से केवल तभी प्राप्त करने के लिए एक खोज क्वेरी के प्रक्षेपण में निर्दिष्ट करने का कोई तरीका है?
मैंने यह देखने की कोशिश की कि क्या मैं $ elemMatch ऑपरेटर कर सकता हूं लेकिन यह उप-दस्तावेजों की एक सरणी के लिए तैयार है। मैं समझता हूं कि मैं एकत्रीकरण ढांचे का उपयोग कर सकता हूं लेकिन ऐसा लगता है कि इस मामले में यह अधिक होगा। एकत्रीकरण ढांचा शायद एक ही खोज क्वेरी के रूप में तेज़ नहीं होगा। पाठ्यक्रम संग्रह को क्वेरी करने का कोई तरीका है ताकि लौटाया गया दस्तावेज़ इस तरह के रूप में हो सकता है?
{
"_id" : ObjectId("51780fb5c9c41825e3e21fc4"),
"name" : "CS 101",
"students" : [
ObjectId("51780f796ec4051a536015d0"),
]
}
में एकाधिक छात्र आईडी मान सूचीबद्ध कर रहे हों, सरल सरणी के साथ-साथ उप-दस्तावेज़ों के सरणी पूछने में सक्षम न होने पर मेरे विचारों की पुष्टि करने के लिए धन्यवाद। मुझे लगता है मुझे अपनी स्कीमा का फिर से मूल्यांकन करना होगा। क्या आप जानते हैं कि 10 जीन इस मुद्दे को हल करने की योजना बना रहा है या नहीं? – shargors
मैं jira.mongodb.org में इसके लिए जिरा टिकट नहीं ढूंढ पाया और वहां टिकट के बिना रिलीज के लिए कुछ भी निर्धारित नहीं हुआ, इसलिए मैं निश्चित रूप से जल्द ही कभी नहीं कहूंगा। –
http://stackoverflow.com/questions/8145523/mongodb-find-by-multiple-array-items – Xerri