Mongo导出查询以仅在JSON数组内的JSON对象中投影特定字段

问题描述

我需要仅在json数组内的json对象中投影特定字段。假设我有一个包含许多如下文档的收藏集

{
 "_id" : Object("sddf3r"),"item_id" : "1235","outerObj" : [{
    "fieldA" : "valueA","fieldB" : "valueB","created_at" : "2019-07-10T14:25:30.000Z"  
 }]
}

现在我想将字段item_id,outerObj.created_at导出为csv,我使用以下查询

mongoexport --host="localhost:27017" -d testdb -c items --query '{"item_id" : {$in :["1235"]}}' --csv -f item_id,outerObj.created_at --out output.csv

但这会导致整个outerObj被打印出来。

我应该如何修改查询以仅导出externalObj内部的created_at字段?

解决方法

如果仅对从externalObj数组导出第一项感到满意,则可以在字段列表中使用索引:

mongoexport \
    --host="localhost:27017" \
    -d testdb \
    -c items \
    --query '{"item_id" : {$in :["1235"]}}' \
    --csv \
    -f item_id,outerObj.0.created_at \
    --out output.csv