पार्टी के लिए थोड़ा देर होनी चाहिए, लेकिन उम्मीद है कि समाधान के लिए शिकार करने वाले अन्य लोगों की मदद मिलेगी। मुझे समेकन ढांचे का उपयोग करके और $ परियोजना के साथ $ $ को अनदेखा करके, उन्हें एक साथ जोड़कर ऐसा करने का एक तरीका मिला है। मैं PHP का उपयोग कर इसे किया है, लेकिन आप सार मिलना चाहिए:
$ops = array(
array('$match' => array(
'collectionColumn' => 'value',
)
),
array('$project' => array(
'collection.subcollection' => 1
)
),
array('$unwind' => '$subCollection'),
array('$match' => array(
subCollection.subColumn => 'subColumnValue'
)
)
);
पहला मैच और इस परियोजना सिर्फ बाहर फिल्टर करने के लिए यह तेजी से बनाने के लिए उपयोग कर रहे हैं, तो subcollection पर तनाव मुक्त बाहर प्रत्येक subcollection आइटम आइटम द्वारा थूक जो फिर अंतिम मैच का उपयोग करके फ़िल्टर किया जा सकता है।
उम्मीद है कि मदद करता है।
(रयान Wheale से) अद्यतन:
फिर आप $group
डेटा अपनी मूल संरचना में। यह एक $elemMatch
जो एक subdocument की तुलना में अधिक रिटर्न होने की तरह है:
array('$group' => array(
'_id' => '$_id',
'subcollection' => array(
'$push' => '$subcollection'
)
)
);
मैं PHP के लिए नोड से अनुवाद, तो मैं PHP में परीक्षण नहीं किया। अगर कोई नोड संस्करण चाहता है, तो नीचे एक टिप्पणी छोड़ दो और मैं स्वीकार करूंगा।
उत्तर के लिए धन्यवाद, मैं एक और संग्रह बनाने की कोशिश करूंगा "टैग" चुड़ैल में मेरे सभी टैग हो सकते हैं और इस पर फ़िल्टर कर सकते हैं (लेकिन यह सुनिश्चित न करें कि यह एनओएसक्यूएल तरीके से है) – Mush