У меня есть набор статей в 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', но имею дьявола времени, выясняя, каков поисковый предикат был бы.
Если поле «география» не существует, когда в нем нет тегов (т.е. оно создается при добавлении местоположения), вы можете сделать:
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