6

次の構造を持つ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'})を書いてみましたが、うまくいかないようです。検索パラメータを「tags.geography」に変更することも考えましたが、検索述語がどうなるかを理解するのに時間がかかります。

4

1 に答える 1

10

「geography」フィールドにタグがない (つまり、場所を追加したときに作成された) ときに「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を参照してください。

于 2010-03-22T21:48:51.003 に答える