Фильтрация документов против словаря вводит MongoDB

У меня есть набор статей в MongoDB, который имеет следующую структуру:

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

Если я хотел записать запрос, который искал все статьи, которые имели по крайней мере 1 тег географии, как я сделаю это? Я попытался писать db.articles.find ({'теги': 'география'}), но это, кажется, не работает. Я также думал об изменении поискового параметра к 'tags.geography', но имею дьявола времени, выясняя, каков поисковый предикат был бы.

5
задан Thomas 22 March 2010 в 21:33
поделиться

1 ответ

Если поле «география» не существует, когда в нем нет тегов (т.е. оно создается при добавлении местоположения), вы можете сделать:

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

Если оно существует и пусто (т.е. , "geography": [] ) вам следует добавить поле geography_size или что-то в этом роде и сделать:

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

Дополнительная информация по запросам доступна на http: //www.mongodb .org / display / DOCS / Advanced + Queries

10
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: