2017-09-08 7 views
0

MongoDBとTextプロセスで新規に追加されました。 私は解析されたつぶやきを持つデータベースを持っています。 例:MongoDB/PyMongo配列から具体的な項目を削除する方法

{ 
    "_id" : ObjectId("59b24aa1a0c99b0b85732406"), 
    "idt" : "906060929829183489", 
    "tweet" : [ 
     "RT", 
     "@moocowpong1", 
     ":", 
     "@whitequark", 
     "isn't", 
     "the", 
     "cloud", 
     "just", 
     "your", 
     "data", 
     "relocating", 
     "to", 
     "san", 
     "francisco" 
    ], 
    "createdDate" : ISODate("2017-09-08T07:45:34Z"), 
    "userName" : "Fiora Aeterna", 
    "userLocation" : "San Jose, CA", 
    "geo" : null, 
    "geoCoord" : null, 
    "Lang" : "en", 
    "retweet_count" : 0, 
    "sentimiento" : "", 
    "score_tag" : "" 
} 

私はツイートの単語をトークン化しました。 私の次のステップはストップワードを削除することです。

マイコード:

for doc in tweets.find({},{'tweet': 1}).limit(1): 
    print (doc) 
    for term in (doc['tweet']): 
     if set(stop).intersection(term.split()): 
      print ("Found One") 
      tweets.update({ 'idt': doc['_id'] }, { '$pull': { 'tweet': { '$eq': term } } }) 

stopはストップワードを持つ配列です。 私はつぶやきの配列から項目を削除したいと思いますが、私のコードはで失敗:

raise WriteError(error.get("errmsg"), error.get("code"), error) pymongo.errors.WriteError: unknown top level operator: $eq

私は私の更新が正しいかどうかわからないんだけど、あなたは私を助けることができますか?あなたは$inオペレータない$eqを使用する必要があります

{ 
    "_id" : ObjectId("59b24aa1a0c99b0b85732406"), 
    "idt" : "906060929829183489", 
    "tweet" : [ 
     "@moocowpong1", 
     "@whitequark", 
     "cloud", 
     "just", 
     "data", 
     "relocating", 
     "san", 
     "francisco" 
    ], 
    "createdDate" : ISODate("2017-09-08T07:45:34Z"), 
    "userName" : "Fiora Aeterna", 
    "userLocation" : "San Jose, CA", 
    "geo" : null, 
    "geoCoord" : null, 
    "Lang" : "en", 
    "retweet_count" : 0, 
    "sentimiento" : "", 
    "score_tag" : "" 
} 
+0

アップデートエラー:WriteError(error.get(「ERRMSG」)、error.get(「コード」を上げます)、エラー) pymongo.errors.WriteError:不明な最上位演算子:$ eq –

答えて

0

私の最後のobjetiveは(同様の)のようなレジスタです。したがって、forループ内の各ストップワードを制御する必要はありません。一度にすべてのストップワードを与え、このような1つのクエリでそれらのすべてを引くことができます。

db.collection.update({}, { $pull: { "tweet": { $in: ["stopWord1", "stopWord2"] } } })

関連する問題