2013-07-15 10 views
9

私は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 

["entities"]["urls"]が存在しない場合のでtry/except理由は、それは誤りです。

は、どのように私は[ "実体"] [ "URLが"]が存在するかどうかを判断することができますか?

+0

また、私の用語「フィールド」を修正してください –

答えて

7

録音はこれだけ「URLが」という辞書にあるかどうかをチェックし、別の辞書への重要な「実体」のリンク辞書です。

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

いずれにしても進めたい場合は、getを使用することもできます。

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

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

+0

ありがとうございます!レコード["エンティティ"]が存在するかどうかをチェックするのはどうですか?レコード内のいずれか 'かの「実体」::'や 'record.get(「実体」)' –

+0

あなたは同じことを行うことができます。 – llb

+0

すごく感謝しています。私はできるだけ早く受け入れる(5分) –

6

ただ、フィールドが存在し、値がnullでないかどうかを確認するために、答えを@martingreberに追加します。

mongo_coll.find({ 
$and:[ 
    {"entities.urls": {$exists:1}}, 
    {"entities.urls": {$not: {$type:10}}} 
]})