PyMongo - `if`在游标

时间:2015-11-19 13:14:34

标签: python mongodb cursor pymongo

我有一个MongoDB,文档是这样的: MongoDB collection Stucture

我有一个txt文件,其中包含一些单词及其情感分数。

我想在MongoDB中找到这些单词,但是为了某种关系,我想在新的集合中插入这些文档的字段。

代码:

for w in words:
            print w
            cursor = db.collectionName.find({ 'surfaceStart': w })
        for document in cursor:
            relation = document['rel']
            word = document['surfaceEnd'].encode('utf-8')
            posnum = float(get_positive(cols))
            negnum = float(get_negative(cols))
            if (document['rel']).find('Synonym'):
                db.testcollection.insert ({ 'surfaceStart': w,'surfaceEnd': word,'Relation': relation, "pos": posnum, "neg": negnum })

            if (document['rel']).find('Antonym'):

                db.testcollection.insert ({ 'surfaceStart': w,'surfaceEnd': word,'Relation': relation, "pos": posnum, "neg": negnum })
            if (document['rel']).find('Related') or (document['rel']).find('Derived'):
                db.testcollection.insert ({ 'surfaceStart': w,'surfaceEnd': word,'Relation': relation, "pos": posnum, "neg": negnum })

不幸的是,这段代码有一种奇怪的行为。 似乎无法控制关系,并在testcollection中为每个关系插入文档3次。 我不明白为什么会发生这种情况,只要我有IF功能。

1 个答案:

答案 0 :(得分:0)

document['rel']似乎是一个字符串:" r / instanceOf"在您发布的所有示例中。字符串上的find方法返回字符串中项目的位置,如果未找到,则返回-1;在布尔上下文中,-1为True。

您无论如何都不关心字符串的位置,因此您不应该使用find。使用普通in

if 'Synonym' in document['rel']:
    ...

if 'Related' in document['rel'] or 'Derived' in document['rel']: