簡體   English   中英

如何從pymongo中的列表中查詢元素

[英]how to query an element from a list in pymongo

pymongo嘗試查詢tags元素時拋出錯誤

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. 第一步:刪除逗號或點,以免進行正則表達式搜索。
  2. 其次,使用phrase.split()分割單詞。
  3. 將此添加到set以避免重復的單詞。
  4. 將集合轉換為list
  5. 最好創建一個包含一些要從列表中刪除的單詞的字典,例如“ how”,“ you”,“ me”等,但這將需要大量的計算。

希望這個想法會有所幫助。

您的查詢是錯誤的。 嘗試以下方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM