私はこのような文書を持つデータベースを持っています:
{
_id: 123,
metrics: [{
_id: ObjectID(…),
name: 'foo',
steps: [1, 2, 3, …],
values: [10, 12, 13, …]
},
{
_id: ObjectID(…),
name: 'bar',
steps: [1, 2, 3, …],
values: [1.2, 1.2, 1.3, …]
},
]
}
今私の目的は、すべてのドキュメントを取得することですが、$map
はすべての配列エントリをname
属性に、他のフィールドを破棄します。私はこれを次のようにすることができると思った:
pipeline = [{'$project': {'metrics': {'$map': {'input': '$metrics', 'in': '$this.name'}]
results = client.db.runs.aggregate(pipeline)
しかし、結果には、要求されたフィールドname
が存在しなかったかのように、各配列エントリ({'metrics': [None, None, None, …]}
)のNone
値しかありません。しかし、そうです。私はまた、idフィールドで試してみましたが、役に立たなかった。私はフィールドがそこにあるデータを調べることができます。私はここで間違っていることを理解できません。