मेरे पास एक मोंगो संग्रह है जो इस तरह दिखता है:

{
    '_id': '...',
    'friends': {
        'id1': {'name': 'john', 'dateAdded': ISODate(...)},
        'id2': {'name': 'joe', 'dateAdded': ISODate(...)},
         ...
    }
}

मैं संग्रह मॉडल को बदले बिना friends विशेषता dateAdded बिना के संग्रह को फ़िल्टर करना चाहूंगा।

क्या कोई ऐसा ऑपरेटर है जो एक एम्बेडेड दस्तावेज़ शब्दकोश के अंदर फ़िल्टर करना संभव बनाता है?

जहां क्वेरी इस तरह दिखेगी:

self.collection.find({
    'friends.$operator.dateAdded': {
        '$gte': datetime.datetime(2000, 1, 1),
        '$lte': datetime.datetime(2001, 9, 1)
    }
})
0
The224 25 सितंबर 2020, 21:39

1 उत्तर

सबसे बढ़िया उत्तर

आप जो पूछ रहे हैं उसे करने के लिए कोई ऑपरेटर नहीं है। (बहुत) सरल शब्दों में, MongoDB को कुंजी/मूल्य स्टोर के रूप में सोचें; मूल्य निर्धारित करने के लिए आपको कुंजी जानने की आवश्यकता है।

यदि आपके पास विकल्प है, तो अपनी स्कीमा को फिर से तैयार करें ताकि friends एक सरणी हो और ids खो दें। सामान्य तौर पर यह खराब डिज़ाइन है कि मनमाने ढंग से नामित कुंजियाँ जैसे id[n]

1
Belly Buster 25 सितंबर 2020, 20:44