MongoDB中的游标无法正常工作 - PYTHON

时间:2015-11-27 20:15:06

标签: python mongodb

我有一个MongoDB集合,如下图所示: MongoDB

我想通过rel过滤MongoDB数据。如果relation(“rel”)是“Synonym”或“RelatedTo”,我想在变量中添加文档[surfaceStart]。之后,我想在文本文件中搜索,如果此变量包含在此txt的单词中。 我的代码如下:

f=open(document.txt)
cursor = db.collection.find({"$or": [{"rel": "Synonym"}, {"rel": "RelatedTo"}]})
for document in cursor:
    end = document['surfaceEnd'].encode('utf-8')
    start = document['surfaceStart'].encode('utf-8')
    for line in f:
            for w in words:
                if start == w:
                    print start
                    items = db.collectionNew.find({ 'surfaceEnd': start })
                    if  items.count() > 0:
                        break
                     else:
                        db.collectionNew.insert ({ 'surfaceStart': start,'posStart': posnum, 'negStart': negnum, 'surfaceEnd': end,'posEnd': posnum,'negEnd': negnum, 'rel' : document['rel'], 'findEnd' : 0  })

不幸的是,在最后collectionNew仍然是空的。我试图找到问题所在,所以我添加了行print line,我意识到问题从开始就开始了。我认为我的光标有问题。请你帮助我好吗?在此先感谢!!!!!!

2 个答案:

答案 0 :(得分:0)

所有rel字段值都以/r/为前缀?如果是,您应该将查询更改为:

cursor = db.collection.find({"$or": [{"rel": "/r/Synonym"}, {"rel": "/r/RelatedTo"}]})

答案 1 :(得分:0)

  

如果relation(“rel”)是“Synonym”或“RelatedTo”,

  

您的第一个查询是否实际返回任何结果?

  

不,它没有,

您的图片没有显示值为SynonymRelatedTo

的列

对通讯的回应:

以下行显然是错误的并且会产生错误:

f=open(document.txt)
  

不幸的是,有一个错误:

endWord = document('surfaceEnd').encode('utf-8') 
TypeError: 'dict' object is not callable

括号,括号,括号。它们不可互换。

document('surfaceEnd') 

应该是:

document['surfaceEnd']

document是一个python字典 - 不是函数。