14

pymongoを使用してmongodbに接続しています:

client = MongoClient()
mongo = MongoClient('localhost', 27017)
mongo_db = mongo['test']
mongo_coll = mongo_db['test']   #Tweets database

私はカーソルを持っていて、すべてのレコードをループしています:

cursor = mongo_coll.find() 
for record in cursor:    #for all the tweets in the database
    try:
      msgurl = record["entities"]["urls"]    #look for URLs in the tweets
    except:
      continue

の理由は、存在しないtry/except場合はエラーになるためです。["entities"]["urls"]

存在するかどうかをどのように判断でき["entities"]["urls"]ますか?

4

2 に答える 2

11

レコードは、キー"entities"が別の辞書にリンクされている辞書なので、その辞書にあるかどうかを確認するだけ"urls"です。

if "urls" in record["entities"]:

とにかく先に進みたい場合は、get を使用することもできます。

msgurl = record["entities"].get("urls")

そのようなキーがない場合、これにより msgurl は None になります。

于 2013-07-15T21:02:10.830 に答える
8

私は pymongo に詳しくありませんが、クエリを変更して、 を含む結果のみが返されるようにしないのはなぜ"urls"ですか? 何かのようなもの:

mongo_coll.find({"entities.urls": {$exists:1}}) 

http://docs.mongodb.org/manual/reference/operator/exists/

于 2013-07-16T05:41:09.273 に答える