gpt4 book ai didi

mongodb - Mongoexport 获取 CSV 输出中嵌套对象的属性

转载 作者:IT老高 更新时间:2023-10-28 13:33:19 24 4
gpt4 key购买 nike

我正在尝试使用 mongoexport 从 mongo-db 获取 CSV。

我的数据是这样的格式:

{
"_id": "99",
"page_id": NumberLong(1122334455),
"data": {
"0": {
"item_id": NumberLong(123456789),
"item_name": "item1"

},
"1": {
"item_id": NumberLong(987654321),
"item_name": "item2"
},
},
"last_updated_utc": ISODate("2013-12-19T13:17:43.994Z")

}

为此,我使用以下命令:

mongoexport -f _id,page_id,last_updated_utc --query {page_id:1122334455} -d mydatabase -c mycollection --csv

这给出了输出:

"99",1122334455,2013-12-19T13:17:43.994Z
exported 1 record

问题是我需要输出中 data 元素中的 item_name。这些是一个动态数组,可以不包含任何项目或包含许多项目。

如果我将 data 添加到字段 (-f) 参数,那么它只会将其作为 JSON 字符串输出到 CSV,对于每个对象,这对使用数据没有帮助 future 。

我的目标是:

"99",1122334455,2013-12-19T13:17:43.994Z,item1
"99",1122334455,2013-12-19T13:17:43.994Z,item2

几乎是非规范化的,或者像 SQL 中的外连接。所以它只是 data 项目 ID。

这可能吗?如何将 item_id 放入 CSV 输出?

最佳答案

MongoExport

获取嵌套对象的属性

示例文档

{
"_id": "99",
"page_id": NumberLong(1122334455),
"data": {
"0": {
"item_id": NumberLong(123456789),
"item_name": "item1"

},
"1": {
"item_id": NumberLong(987654321),
"item_name": "item2"
},
},
"last_updated_utc": ISODate("2013-12-19T13:17:43.994Z")

}MongoExport 语法

mongoexport --host <hostname> --db <Database Name> --collection <collection Name> --csv --fields fieldname1,fieldname2 --out fileName.csv

示例:以 CSV 格式导出

mongoexport --host localhost --db xyz --collection abc --csv --fields data.0.item_id,data.0.item_name,data.1.item_id,data.1.item_name --out important.csv

示例:以 JSON 格式导出

mongoexport --host localhost --db xyz --collection abc --fields data.0.item_id,data.0.item_name,data.1.item_id,data.1.item_name --out important.csv

如果要获取数组的值,则需要展开数组。

$unwind:从输入文档中解构一个数组字段以输出每个元素的文档。每个输出文档都是输入文档,其中数组字段的值被元素替换。

更多详情请引用此链接

https://docs.mongodb.org/v3.0/reference/operator/aggregation/unwind/

关于mongodb - Mongoexport 获取 CSV 输出中嵌套对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com