python - 如何从pymongo中的列表中查询一个元素

标签 python search 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. 将集合转换为列表
  5. 制作一个包含一些将从列表中删除的单词的词典是个好主意,例如“how”、“you”、“me”……但它会进行大量计算。

希望这个想法能有所帮助。

最佳答案

您的查询是错误的。尝试更接近于:

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

关于python - 如何从pymongo中的列表中查询一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12437849/

相关文章:

python - matplotlib 程序运行时窗口无响应

Python 删除 JSON 子字符串

python - 批量计算给定数组与mongodb数据库数组之间的欧氏距离

java - 搜索 JTree

pymongo - 集合的对象不可调用。如果你打算在 'update' 对象上调用 'Collection' 方法,它会失败,因为不存在这样的方法

mongodb - mongodb写锁行为

Python PDFMIner - PDF 到 CSV

python读取加密(使用gnupg)zip文件的内容而不将文件解密到文件系​​统

javascript - 如何在 Windows 8 应用程序中实现和激活搜索?

search - 如何延迟 AngularJS 即时搜索?