我正在使用MongoDB版本2.6.x.我需要从特定的集合中导出文档.
mongoexport是满足需求的工具.但是,我不知道如何导出嵌套数组下的所有对象.以下是我的示例文档.
{
"_id": 1,
"field_1": "value1",
"field_2": "value2",
"field_array": [
{"sub_field_1": "sub_val_1", "sub_field_2": "sub_val_2"},
{"sub_field_1": "sub_val_1", "sub_field_2": "sub_val_2"},
{"sub_field_1": "sub_val_1", "sub_field_2": "sub_val_2"}
]
}
Run Code Online (Sandbox Code Playgroud)
以下是mongoexport命令
mongoexport -d db_name -c collection_name -q '{"field_array.sub_field_1": {$gte: "some_value_1", $lt: "some_value_2"}}' -fieldFile fields.txt --csv > data_report.csv
Run Code Online (Sandbox Code Playgroud)
在哪里,fields.txt低于内容
field_array.sub_field_1
field_array.sub_field_2
Run Code Online (Sandbox Code Playgroud)
我在csv即空字段中获得如下数据.
field_array.sub_field_1,field_array.sub_field_2
,
Run Code Online (Sandbox Code Playgroud)
但是,如果我在fields.txt下面指定索引值
field_array.0.sub_field_1
field_array.0.sub_field_2
Run Code Online (Sandbox Code Playgroud)
然后,我得到以下数据
field_array.sub_field_1,field_array.sub_field_2
sub_val_1,sub_val_1
Run Code Online (Sandbox Code Playgroud)
即,只返回field_array中的一个对象,但不是全部.但是,我需要的是如下
field_array.sub_field_1,field_array.sub_field_2
sub_val_1,sub_val_1
sub_val_2,sub_val_2
Run Code Online (Sandbox Code Playgroud)
即,field_array中的所有对象.
有帮助吗?
我已经获得了托管在mlab上的数据库。我正在尝试将文件从数据库下载到我的计算机上。我该怎么办?我应该补充一点,我以前从未使用过mlab或MongoDB。我要做的就是下载某种格式的文件(例如JSON或CSV),然后使用我拥有的python脚本进行处理
我看到mongoexport命令可能会解决问题,但我不知道如何使用它。我应该在cmd上运行吗?在我的计算机上,该命令未被识别为命令,我需要下载什么来解决该问题?
我看到的另一件事是pymongo。如果有人知道一般如何使用pymongo或python导出数据,我希望听到它。
我正在尝试按照本教程:http://www.ultrabug.fr/tag/mongoexport/
并使用sh文件作为查询行.这是我的档案:
#!/bin/bash
d=`date --date="-3 month"`
echo "{ timeCreated: { "\$lte": $d} }"
Run Code Online (Sandbox Code Playgroud)
这是我的mongoexport行:
mongoexport --db game_server --collection GameHistory -query /home/dev/test2.sh --out /home/dev/file.json
Run Code Online (Sandbox Code Playgroud)
我一直在:
assertion: 16619 code FailedToParse: FailedToParse: Expecting '{': offset:0 of:/home/dev/test2.sh
Run Code Online (Sandbox Code Playgroud)
为什么?我怎样才能做到这一点?
我有一个很大的 mongoDB 集合。我想将此集合导出为 CSV,以便我可以将其导入到统计包中以进行数据分析。
该集合中有大约 15 GB 的文档。我想将集合拆分为约 100 个大小相同的 CSV 文件。有没有办法使用 mongoexport 实现这一目标?我还可以在 pymongo 中查询整个集合,将其拆分并手动写入 csv 文件,但我想这会更慢并且需要更多的编码。
感谢您的意见。
mongoexport实用程序的查询参数的正确格式是什么?
在命令行中运行以下命令时:
mongoexport -h localhost:27000 -d dbName -c collName -q "{'time': { $gt: new Date('2014-01-28T12:00:00Z')}}" -o output.js
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
连接到:localhost:27000断言:16619代码FailedToParse:FailedToParse:期待'}'或',':offset:37
阅读Mongo导出查询arg和JSONDocument文档并没有帮助我理解查询参数的预期格式.
在mongo shell中运行相同的查询成功.
我目前正面临使用mongoexport工具导出的问题.
不可能从我的查询中的时间戳创建日期:
db.getCollection('FooBarBarFoo').find({"actKey":"foobar","dt":{$gt:new Date('1434907890000')}})
Run Code Online (Sandbox Code Playgroud)
这里我做了一些测试:
mongo-aws-dev:SECONDARY> var testDate = new Date('1434907890000');
mongo-aws-dev:SECONDARY> testDate
ISODate("0NaN-NaN-NaNTNaN:NaN:NaNZ")
mongo-aws-dev:SECONDARY> var testDate = new ISODate('1434907890000');
mongo-aws-dev:SECONDARY> testDate
ISODate("1441-08-17T00:00:00Z")
mongo-aws-dev:SECONDARY> var testDate = new ISODate(1434907890000);
mongo-aws-dev:SECONDARY> testDate
ISODate("1441-08-17T00:00:00Z")
Run Code Online (Sandbox Code Playgroud)
我们可以看到1434907890000对应6/21/2015, 7:31:30 PM于我的时区中的日期的以毫秒为单位的时间戳被转换为中世纪的某些时间.
哪里可能出错,以及如何在shell脚本中将时间戳传递给mongo查询?
我在下面的 shell 脚本中将某些字段从 mongo 集合导出到 CSV 文件。
mongoexport --host localhost --db mydb --collection ratings --csv > data.csv --fields userId,filmId,score
Run Code Online (Sandbox Code Playgroud)
我的问题是生成的结果带有标头值。
前任:
userId,filmId,score
517,533,5
518,534,5
Run Code Online (Sandbox Code Playgroud)
有没有办法生成没有标题字段的 csv 文件?
当我尝试使用--query选项使用mongoexport进行备份以获取状态等于A的文档时,面临以下错误:
mongoexport --port 27017 --db ex --collection A --type=csv --fields _id,status --query '{"status":"A"}' -o eg.csv
Run Code Online (Sandbox Code Playgroud)
错误验证设置:查询''{status:A}''无效JSON
请让我知道如何使用--query选项.