में एक या खंड का उपयोग करके मोंगोडीबी मैं मोंगोडीबी से पूछताछ करने के लिए पाइथन के मोंगोएन्गिन का उपयोग कर रहा हूं, और इसे अधिकांश भाग के लिए पसंद किया है, लेकिन मुझे advanced query के साथ कोई समस्या है।मोंगोएन्गिन
यहाँ मेरी मॉडल
class ContentItem(Document):
account = ReferenceField(Account)
creator = ReferenceField(User)
public = BooleanField(default=False)
last_used = DateTimeField(default=datetime.now)
मैं सभी ContentItem
की है कि एक विशेष खाते के हैं के लिए एक प्रश्न करना चाहते हैं, और या तो उपयोगकर्ता के प्रवेश या सार्वजनिक द्वारा बनाई गई हैं है। क्वेरी मैं
query = ContentItem.objects.filter((Q(account=account) & Q(public=True)) | (Q(account=account) & Q(creator=logged_in_user))).order_by('-last_used')
या लिखा है:
query = ContentItem.objects.filter(Q(account=account) & (Q(public=True) | Q(creator=logged_in_user))).order_by('-last_used')
लेकिन इन XOR होने लगते हैं जहां यदि या तो public
, या creator
लेकिन दोनों नहीं। क्या यह उम्मीद है?
क्या मैं कुछ देख रहा हूं? क्या मुझे इसे सीधे मोंगोएन्गिन के बजाय मोंगोडब के साथ करना चाहिए?
मेरा वर्तमान कामकाज दो अलग-अलग प्रश्नों को बनाने और परिणामों को गठबंधन करना है, लेकिन जैसे ही सामग्री आइटम # बड़ा हो जाता है, परिणामस्वरूप वापस आने में काफी समय लग रहा है क्योंकि मुझे ऑर्डर करने से पहले सभी वस्तुओं को प्राप्त करने की आवश्यकता है, इस प्रकार (django) अंकुरित परिणामों के सभी लाभ खोना।
कि चाल किया आयात कर रहे हैं। मैंने दस्तावेज को ठीक करने के लिए github खाते पर एक नोट जोड़ा https://github.com/hmarr/mongoengine/issues/363 – MattoTodd
यह मामला नहीं है; उपरोक्त संदर्भित जिथब मुद्दे देखें। मैंने कोशिश की, लेकिन '|' के बजाय 'या' का उपयोग करके फ़िल्टर लागू नहीं होगा। '&' और '|' का उपयोग करना मेरे लिए ठीक काम करता है। – Paul
@ पॉल - शायद आपने यह नहीं देखा कि यह पोस्ट 9 महीने का था, और बग को ठीक कर दिया गया है? – apiguy