Pregunta

Tengo una colección de artículos en MongoDB que tiene la siguiente estructura:

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

Si quería escribir una consulta que buscó todos los artículos que tenían al menos 1 etiqueta de la geografía, ¿cómo iba a hacer eso? He tratado de escribir db.articles.find ({ 'etiquetas': 'geografía'}), pero eso no parece funcionar. También he pensado en cambiar el parámetro de búsqueda para 'tags.geography', pero estoy teniendo un diablo de un tiempo averiguar cuál sería el predicado de búsqueda.

¿Fue útil?

Solución

Si el campo "geografía" no existe cuando no hay ninguna etiqueta en ella (es decir, que se crea cuando se agrega una ubicación), que podría hacer:

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

Si no existe y está vacía (es decir, "geography" : []) se debe añadir un campo geography_size o algo y hacer:

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

Hay más información sobre las consultas en http://www.mongodb.org/display/ docs / Advanced + consultas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top