2013-07-15 3 views
9

मैं अपने mongodbpymongo का उपयोग कर से कनेक्ट कर रहा हूँ:यह निर्धारित करने के लिए कि कोई फ़ील्ड मौजूद है या नहीं?

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"] मौजूद नहीं है, यह त्रुटियों से बाहर है।

मैं कैसे निर्धारित कर सकता हूं कि ["संस्थाएं"] ["यूआरएल"] मौजूद है या नहीं?

+0

भी कृपया "फ़ील्ड" की मेरी शब्दावली को सही करें –

उत्तर

7

रिकॉर्ड एक शब्दकोश है जिसमें कुंजी "संस्थाएं" किसी अन्य शब्दकोश से लिंक होती हैं, इसलिए बस यह देखने के लिए जांचें कि "urls" उस शब्दकोश में है या नहीं।

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

यदि आप किसी भी मामले में आगे बढ़ना चाहते हैं, तो आप भी प्राप्त कर सकते हैं।

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

इससे कोई ऐसी कुंजी नहीं होने पर संदेश को बराबर नहीं किया जाएगा।

+0

बहुत बहुत धन्यवाद! यह जांचने के बारे में क्या है कि रिकॉर्ड ["संस्थाएं" मौजूद है या नहीं? –

+0

आप एक ही काम कर सकते हैं: या तो 'if "entities" रिकॉर्ड में: 'या' record.get ("entities") '। – llb

+0

बहुत बढ़िया धन्यवाद। जैसे ही मैं सक्षम हूं, बीमार स्वीकार करता हूं (5 मिनट) –

8

मैं पिमोंगो से परिचित नहीं हूं, लेकिन आप अपनी क्वेरी क्यों नहीं बदलते हैं, इसलिए यह केवल उन परिणामों को लौटाता है जिनमें 'यूआरएल' होता है? कुछ की तरह:

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

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

6

बस अगर क्षेत्र मौजूद है और मान शून्य नहीं है की जाँच करने के जवाब @martingreber करने के लिए, जोड़ने के लिए।

mongo_coll.find({ 
$and:[ 
    {"entities.urls": {$exists:1}}, 
    {"entities.urls": {$not: {$type:10}}} 
]}) 
संबंधित मुद्दे

 संबंधित मुद्दे