用于从mongodb集合中提取文本字段并使用pymongo将其附加到python中的列表的代码

时间:2015-03-19 19:01:56

标签: python arrays mongodb pymongo

我创建了一个if语句来遍历mongodb json对象的集合,并从每个对象中提取文本字段并将其附加到列表中。这是下面的代码。

appleSentimentText = []
   for record in db.Apple.find():
     if record.get('text'):
       appleSentimentText.append(record.get("text"))

这很有效,但我有20个集合要执行此操作,我担心代码可能会开始变得有点混乱,并且无法管理此代码的另外19种变体。我已经开始编写一段可以实现此目的的代码。首先,我创建了一个数组,其中包含20个集合的名称。

filterKeywords = ['IBM', 'Microsoft', 'Facebook', 'Yahoo', 'Apple','Google', 'Amazon', 'EBay', 'Diageo',
              'General Motors', 'General Electric', 'Telefonica', 'Rolls Royce', 'Walmart', 'HSBC', 'BP',
              'Investec', 'WWE', 'Time Warner', 'Santander Group']

然后我在if语句中使用这个数组循环遍历每个集合

for word in filterKeywords:
  for record in db[word].find():
    if db[word].get('text'):

我现在希望它根据集合名称创建一个列表变量(例如AppleSentimentText,如果集合是apple,FacebookSentimentText,如果它是Facebook集合等),虽然我不确定下一步该做什么。欢迎任何帮助

1 个答案:

答案 0 :(得分:2)

您可以将$existslimit返回的字段用于“text”,这样就无需在 pymongo 中查看所有记录强>它应该是这样的:

编辑:

正如@BarnieHackett指出的那样,您也可以过滤出_id

for word in filterKeywords:
    for r in db[word].find({'text': {'$exists': True}}, {'text': 1, '_id': False}):
        appleSentimentText.append(r['text'])

关键是使用$exists,然后将返回字段限制为'text',不幸的是,因为 pymongo 会返回包含'_id'& 'text'字段,您需要对其进行过滤。

希望这有帮助。