考虑集合“fruits”,其中我有这个文档(我正在使用 Python 的 pymongo 驱动程序,顺便说一句):
{
'_id' : 'lemons',
'weight' : 58,
'shape' : 'oval',
'countries' : ['Mexico', 'Turkey', 'Argentina', 'SAfrica', 'US']
}
现在,如果我只想获取“国家”字段,则此查询可以正常工作:
In [1]: find_one('lemons', { 'countries' : 1, '_id' : 0 })
Out[1]: {u'countries': [u'Mexico', u'Turkey', u'Argentina', u'SAfrica', u'US']}
但事实证明,我真正需要的只是几个顶级国家的列表,而不是全部,所以我使用“$slice”而不是普通的 True/1:
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}
好吧,国家数量减少了,但现在它给了我很多其他不相关的信息!
问:有没有办法只显示我要求的那些字段?另外将 '_id' 列为例外很好,因为始终显示此字段,但我不能确定其他字段,因为 MongoDB 是无方案的,如果需要,我打算使用此功能添加其他字段。