Frage

Ich habe eine Sammlung von Artikeln in MongoDB, die die folgende Struktur:

{
    'category': 'Legislature', 
    'updated': datetime.datetime(2010, 3, 19, 15, 32, 22, 107000), 
    'byline': None, 
    'tags': {
        'party': ['Peter Hoekstra', 'Virg Bernero', 'Alma Smith', 'Mike Bouchard', 'Tom George', 'Rick Snyder'], 
        'geography': ['Michigan', 'United States', 'North America']
    }, 
    'headline': '2 Mich. gubernatorial candidates speak to students', 
    'text': [
        'BEVERLY HILLS, Mich. (AP) \u2014 Two Democratic and Republican gubernatorial candidates found common ground while speaking to private school students in suburban Detroit', 
        "Democratic House Speaker state Rep. Andy Dillon and Republican U.S. Rep. Pete Hoekstra said Friday a more business-friendly government can help reduce Michigan's nation-leading unemployment rate.", 
        "The candidates were invited to Detroit Country Day Upper School in Beverly Hills to offer ideas for Michigan's future.", 
        'Besides Dillon, the Democratic field includes Lansing Mayor Virg Bernero and state Rep. Alma Wheeler Smith. Other Republicans running are Oakland County Sheriff Mike Bouchard, Attorney General Mike Cox, state Sen. Tom George and Ann Arbor business leader Rick Snyder.', 
        'Former Republican U.S. Rep. Joe Schwarz is considering running as an independent.'
    ], 
    'dateline': 'BEVERLY HILLS, Mich.', 
    'published': datetime.datetime(2010, 3, 19, 8, 0, 31), 
    'keywords': "Governor's Race", 
    '_id': ObjectId('4ba39721e0e16cb25fadbb40'), 
    'article_id': 'urn:publicid:ap.org:0611e36fb084458aa620c0187999db7e', 
    'slug': "BC-MI--Governor's Race,2nd Ld-Writethr"
}

Wenn ich wollte, eine Abfrage schreiben, die für alle Artikel gesucht, die mindestens 1 Geographie Tag hatten, wie würde ich das tun? Ich habe schriftlich db.articles.find versucht ({ ‚Tags‘: ‚Geographie‘}), aber das scheint nicht zu arbeiten. Ich habe auch darüber nachgedacht, die Suchparameter auf ‚tags.geography‘ verändern, aber einen Teufel einer Zeit habe, herauszufinden, was die Suche Prädikat wäre.

War es hilfreich?

Lösung

Wenn die „Geographie“ Feld nicht existiert, wenn es keine Tags in es (das heißt, es wird erstellt, wenn Sie einen Standort hinzufügen), könnten Sie tun:

db.articles.find({tags.geography : {$exists : true}})

Wenn es nicht existiert und leer ist (das heißt, "geography" : []) sollten Sie ein geography_size Feld oder etwas hinzuzufügen und zu tun:

db.articles.find({tags.geography_size : {$gte : 1}})

Es gibt weitere Informationen über Abfragen unter http://www.mongodb.org/display/ DOCS / Advanced + Abfragen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top