मैं अपने taxon
संग्रह में निम्न स्कीमा है:MongoDB पुनरावर्ती पूछताछ
{
"_id": 1,
"na": [ "root_1",
"root_2",
"root_3" ],
"pa": 1
},{
"_id": 2,
"na": [ "name_1",
"name_2",
"name_3"],
"pa": 1
},{
"_id": 4,
"na": [ "otherName_1",
"otherName_2",
"otherName_3"],
"pa": 2
}
प्रत्येक दस्तावेज़ जनक क्षेत्र है, जो _id
के अनुरूप की यह माता पिता है द्वारा दूसरे से जुड़े हुए है।
मैं निम्नलिखित परिणाम प्राप्त करने के लिए एक पुनरावर्ती खोज करने के लिए करना चाहते हैं:
{ "_id": 4,
"nameList": [ "otherName_1",
"name_1",
"root_1"]
}
एक निश्चित _id
साथ दस्तावेज़ से, _id: 1
साथ दस्तावेज़ जब तक हर माता-पिता की na
सरणी के पहले आइटम मिल
मुझे वर्तमान में एक्स प्रश्नों (मूल दस्तावेज द्वारा एक, उदाहरण के लिए 3) करके यह परिणाम मिलता है, लेकिन मुझे पूरा यकीन है कि यह एक क्यू का उपयोग करके हासिल किया जा सकता है uery। मैंने पहले ही $graphLookup ऑपरेटर को देखा है, लेकिन इसके साथ अपना रास्ता नहीं मिल सका ...
क्या यह मोंगोडीबी 3.4.1 का उपयोग कर एक ही प्रश्न में इसे हासिल करना संभव है?
संपादित
मैं 50 दस्तावेजों प्रत्येक समय के लिए इस चलाने होगा, इसलिए इष्टतम समाधान किसी एक क्वेरी
उदाहरण के लिएमें सब कुछ गठबंधन करने के लिए हो सकता है, यह होगा
var listId = [ 4, 128, 553, 2728, ...];
var cursor = db.taxon.aggregate([
{$match:
{ _id: {$in: listId}}
}, ...
)];
तरह लग रहा है
और आउटपुट:
[{ "_id": 4,
"nameList": [ "otherName_1",
"name_1",
"root_1"]
}, { "_id": 128,
"nameList": [ "some_other_ame_1",
"some_name_1",
"root_1"]
}, { "_id": 553,
"nameList": [ "last_other_ame_1",
"last_name_1",
"root_1"]
} ... ]
यह एक बहुत अच्छा समाधान है, बहुत बहुत धन्यवाद! क्या एक ही समय में कई दस्तावेजों के लिए यह संभव होगा? (विवरण के लिए मेरा संपादन देखें) – felix
आपका स्वागत है। अद्यतन उत्तर यह किसी भी मिलान की स्थिति के साथ काम करना चाहिए। – Veeram
ठीक है मेरी बुरा मैंने $ के साथ कोशिश की लेकिन कर्सर पर फिर से शुरू करना भूल गया ... यह वही है जो मुझे चाहिए, वास्तविक लाभ देखने के लिए बस कुछ प्रदर्शन परीक्षण चलाने की आवश्यकता है! क्या आपके पास ऐसी क्वेरी के लिए इंडेक्स पर कोई सलाह है? – felix