2012-09-15 9 views
6

pymongo जब से tagsकैसे pymongo में सूची में से एक तत्व क्वेरी करने के लिए

db.users.find({"pseudo":"alucaard"}).distinct("produit_up") 
Out[1]: 
[{u'abus': 0, 
    u'avctype': u'image/jpeg', 
    u'date': u'2012-09-15', 
    u'description': u'le fameux portable solide', 
    u'id': u'alucaard134766932677', 
    u'namep': u'nokia 3310', 
    u'nombre': 1, 
    u'orientation': u'portrait', 
    u'photo': ObjectId('5053cd4e3a5f3a0990da8a61'), 
    u'prix': 1000, 
    u'tags': [u'solide', u'le', u'fameux', u'portable'], 
    u'vendu': False}] 

list(db.users.find({"solide":{"$in":{"document_up.tags"}}})) 

Traceback (most recent call last): 
File "C:\Python27\lib\site-packages\IPython\core\interactiveshell.py", line 2746, in run_code exec code_obj in self.user_global_ns, self.user_ns 
File "<ipython-input-1-8dff98261d7a>", line 1, in <module> 
list(db.users.find({"solide":{"$in":{"document_up.tags"}}})) 
File "C:\Python27\lib\site-packages\pymongo\cursor.py", line 778, in next 
if len(self.__data) or self._refresh(): 
File "C:\Python27\lib\site-packages\pymongo\cursor.py", line 729, in _refresh 
self.__uuid_subtype)) 
InvalidDocument: Cannot encode object: set(['document_up.tags']) 

नायब क्वेरी और तत्व की कोशिश कर मुझे एक त्रुटि फेंकता है: अपने उपयोगकर्ताओं को एक सीमित आकार है, pymongo उपयोगकर्ताओं के लिए सिर्फ एक चाल उदाहरण के लिए : पाठ में, बस इसे एक सेट का उपयोग कर परिवर्तित, एक सूची के लिए सेट परिवर्तित

phrase = "hi you, how are you, am i using this" 
  1. पहला कदम: अल्पविराम या डॉट्स हटाने नियमित अभिव्यक्ति searc से बचने के लिए hs।
  2. सेकंड, शब्दों को विभाजित करने के लिए phrase.split() का उपयोग करें।
  3. इसे डुप्लिकेट शब्दों से बचने के लिए set पर जोड़ें।
  4. एक list
  5. को सेट परिवर्तित यह एक अच्छा विचार हो सकता है एक dictionnary कि कुछ शब्द उस सूची से निकाल दिया जाएगा, जैसे युक्त बनाने के लिए "कैसे", "तुम", "मुझे", ... लेकिन यह बहुत गणना करेगा।

आशा है कि यह विचार मदद करेगा।

उत्तर

22

आपकी क्वेरी गलत है। कुछ के करीब आज़माएं:

list(db.users.find({"document_up.tags":{"$in":["solide"]}})) 
+0

तो यह उलटा था ?! क्योंकि तर्क में, यदि कोई सूची में है, तो हम एक शब्द खोजते हैं, और यदि कोई शब्द में है तो हम सूची नहीं चाहते हैं? –

+2

@AbdelouahabPp वास्तव में मोंगो में यह 'field_name IN (1,2,3) ' – Sammaye

+0

के साथ इस तरह से एसक्यूएल की तरह है क्योंकि मुझे लगता है कि मैं सीधे" numql "कूद गया था, एसईसीएल चरण मिला: पी आपको फिर से धन्यवाद –

संबंधित मुद्दे