2011-09-14 8 views
2

私はpymongoを使用していますが、現在は1つのコレクションがあります。このコレクションには、サッカーリーグでの試合を表す文書が格納されています。それぞれの試合には目標があります。現在の目標は、マッチオブジェクトに含まれているリストとして実装されています。私は何をしたいか

{'matchID':1000, 
    'goals':[{'goalID':200,'scorer':'A'}, 
      {'goalID':201,'scorer':'B']} 
      ] 
} 
{'matchID':1001, 
    'goals':[{'goalID':211,'scorer':'C'}, 
      {'goalID':212,'scorer':'D']} 
      ] 
} 

は、私は上記のデータから期待何201があることであると言う、より高いIDを持つすべての目標のためのクエリです

x = mycollection.find({'$gt':[{'match.goals.goalID':201}]}) 

が、それはどこでも私を取得していない:私はのようなものをしようとしている - 私はMongoDBの中でこれを実装するにはどうすればよいの目標211と

212になるだろう。別のコレクションに目標を分けて、代わりに手動で参照する必要がありますか?一度ゴールを入力すると、決して再び触れることはありません。読み込み専用です。

答えて

2

あなたはそのクエリの問題のカップルを持っている:

  1. 配列にネストされたオブジェクトのgoalID要素の正しい点線のフィールド名は「goals.goalID」でなければなりません - つまり、削除先行 "match."
  2. 正しい$gtため

    0123(及び友達:$gte$ltは、$lteが)のような、field: {$operator: value}あります

+0

素晴らしい!説明ありがとう。それはあなたの例に従って動作します。 – Ciaran

関連する問題