私がこの文書を持っているコレクション「果物」を考えてみましょう(ところで、私はPythonのpymongoドライバーを使用しています):
{
'_id' : 'lemons',
'weight' : 58,
'shape' : 'oval',
'countries' : ['Mexico', 'Turkey', 'Argentina', 'SAfrica', 'US']
}
ここで、「countries」フィールドのみを取得したい場合は、次のクエリで問題なく動作します。
In [1]: find_one('lemons', { 'countries' : 1, '_id' : 0 })
Out[1]: {u'countries': [u'Mexico', u'Turkey', u'Argentina', u'SAfrica', u'US']}
しかし、私が本当に必要としているのは、すべてではなく、いくつかの上位国のリストだけであることが判明したため、単純な True/1 の代わりに「$slice」を使用しています。
In [239]: c.find_one('lemons', { 'countries' : { '$slice' : [0, 3] }, '_id' : 0 })
Out[239]:
{u'countries': [u'Mexico', u'Turkey', u'Argentina'],
u'shape': u'oval',
u'weight': 58}
まあ、国の数は減りましたが、今では他にもたくさんの無関係な情報を得ることができます!
Q:要求したフィールドのみを表示する方法はありますか? さらに、「_id」を例外としてリストすることは問題ありません。このフィールドは常に表示されるためですが、MongoDB にはスキームがなく、必要に応じてこの機能を使用してフィールドを追加するつもりであるため、他のフィールドについてはわかりません。