我有一个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功能。
答案 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']: