Domanda

Ho una collezione di articoli in MongoDB che ha la seguente struttura:

{
    '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"
}

Se avessi voluto scrivere una query che sembrava per tutti gli articoli che hanno avuto almeno 1 tag geografia, come avrei fatto? Ho provato a scrivere db.articles.find ({ 'tag': 'geografia'}), ma questo non sembra funzionare. Ho anche pensato di cambiare il parametro di ricerca per 'tags.geography', ma sto avendo un diavolo di un tempo per capire ciò che il predicato di ricerca sarebbe stato.

È stato utile?

Soluzione

Se il campo "geografia" non esiste quando non ci sono tag in esso (vale a dire, è stato creato quando si aggiunge una posizione), si potrebbe fare:

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

Se non esiste ed è vuota (cioè, "geography" : []) si dovrebbe aggiungere un campo geography_size o qualcosa e fare:

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

Non c'è più informazioni sulle query a http://www.mongodb.org/display/ DOCS / Advanced + query

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top