2015-11-19 3 views
1

У меня есть MongoDB и документы, как это:коллекция Update MongoDB с помощью Python

enter image description here

У меня есть текстовый файл, который включает в себя некоторые слова и их настроения, оценку. Если слово находится в testcollection как «surfaceEnd», я хочу обновить некоторые поля. В противном случае я хочу вставить новую строку.

for w in words: 
      print w 
      if db.testcollection10.find({ 'surfaceEnd': w }) == True: 
       posnum = float(get_positive(cols)) 
       negnum = float(get_negative(cols)) 
       db.testcollection.update({ 'surfaceEnd': w}, {"$set": { 'posEnd': posnum,'negEnd': negnum,'findEnd' : 1 }}) 
       i = i + 1 
      else: 
       cursor = db.collectionNelly.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 'Synonym' in document['rel']: 
         db.testcollection1.insert ({ 'surfaceStart': w,'posStart': posnum, 'negStart': negnum, 'surfaceEnd': word,'posEnd': posnum,'negEnd': negnum, 'rel' : document['rel'], 'findEnd' : 0 }) 

К сожалению, тестовое собрание не может быть создано. В чем проблема в этом коде?

ответ

1

Функция поиска PyMongo возвращает курсор, а не логическое значение. Вы хотите определить, сколько записей было возвращено и действовать соответственно.

for w in words: 
     print w 
     items = db.testcollection10.find({ 'surfaceEnd': w }) 
     if items.count() > 0: 
      # The surfaceEnd entry was found update it. 
     else: 
      # The surfaceEnd entry was not found, insert a new one. 
+0

большое спасибо !! теперь я понимаю курсоры лучше –

+0

Если бы это ответили на ваш вопрос, не могли бы вы пометить его как принятое. –

Смежные вопросы