我正在尝试使用 mongoexport 从 mongo 导出整个集合。我发现的关于日期的大多数答案都涉及查询。我不做查询。我将整个表转储为 JSON 格式。日期时间字段的导出如下:
"dateOfBirth": {
"$date": "1999-02-02T00:00:00.000Z"
}
Run Code Online (Sandbox Code Playgroud)
我只想要日期时间字段的字符串表示形式,所以它看起来像:
"dateOfBirth": "1999-02-02T00:00:00.000Z"
Run Code Online (Sandbox Code Playgroud)
我不知道我们的 mongo 的确切版本,但它是最近的。
我该怎么做呢?
如果要导出任何mongodb数据库的任何集合,可以使用mongoexport
命令.例如:
mongoexport --db dbname --collection collectionName --query '{"fields":1}' --out output.json
Run Code Online (Sandbox Code Playgroud)
但是,如果向查询添加任何选择条件,则mongoexport
命令不起作用.例如,如果运行以下命令:
mongoexport --db dbname --collection collectionName --query '{},{"fields":0}' --out output.json
Run Code Online (Sandbox Code Playgroud)
生成的JSON文件包含每个字段的数据,尽管我排除了一个名为的字段fields
.
那为什么会出现这种奇怪的行为呢?我该如何解决?
为了您的信息,db.colName.find({},{"fields":0})
在mongoDB shell中照常工作.
我在MongoDB 2.4.3和OS X 10.9上.
谢谢.
我试图做一个mongoexport到CSV但只选择带有查询的某些记录.这是我的命令(windows 7 cmd):
mongoexport --host foo.com --port 27017 --username bar -p --db foo --csv --fields col1,col2,col3 --collection bar --out dump_q.csv --query '{"recent":"yes"}'
Run Code Online (Sandbox Code Playgroud)
但是输入密码后,我收到一个错误:
assertion: 16619 code FailedToParse: FailedToParse: Expecting '{': offset:0
Run Code Online (Sandbox Code Playgroud)
该命令在没有查询参数的情况下工作正常,但我无法弄清楚查询有什么问题:
--query '{"recent":"yes"}'
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢
确保使用双引号括起查询和单引号以包含字符串,例如
--query"{'recent':'yes'}"
还要确保查询中没有空格,否则命令提示符会将其解析为另一个参数.所以没有:
--query"{'recent':'yes'}"(注意中间的空格)
包含嵌套字段的查询不起作用,例如:
--query"{'folder.recent':'yes'}"
我正在尝试使用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")
}
Run Code Online (Sandbox Code Playgroud)
为此,我使用以下命令:
mongoexport -f _id,page_id,last_updated_utc --query {page_id:1122334455} -d mydatabase -c mycollection --csv
Run Code Online (Sandbox Code Playgroud)
这给出了输出:
"99",1122334455,2013-12-19T13:17:43.994Z
exported 1 record
Run Code Online (Sandbox Code Playgroud)
问题是我需要输出中item_name
的data
元素.这些是动态数组,可能不包含任何项目或许多项目.
如果我添加data
到字段(-f)参数,那么它只会将此作为JSON字符串输出到CSV中,用于每个对象,这对将来使用数据没有帮助.
我的目标是:
"99",1122334455,2013-12-19T13:17:43.994Z,item1
"99",1122334455,2013-12-19T13:17:43.994Z,item2
Run Code Online (Sandbox Code Playgroud)
几乎是非规范化的,或者像SQL中的外连接一样.所以它只是data
项目ID.
这可能吗?如何item_id
进入CSV输出?
我想将mongodb导出为json,这是一条记录:
{"_id":{"$oid":"554f042c0e81bf483e4a4e2f"}, "batch":"3","bz":NumberInt(1)}
Run Code Online (Sandbox Code Playgroud)
问题是当我使用json加载它时:
json.loads('{"_id":{"$oid":"554f042c0e81bf483e4a4e2f"}, "batch":"3","bz":NumberInt(1)}')
Run Code Online (Sandbox Code Playgroud)
它返回ValueError: No JSON object could be decoded
。这是因为json
无法处理NumberInt(1)
。
所以,我怎么能翻译NumberInt(1)
到1
时候我出口?
运行此命令,导出了 0 条记录。[更改了数据库和集合名称以保护隐私]。加倍检查了语法。
mongoexport --db db_name --collection collection_name --out collection_name_delete.json --verbose
2015-10-15T08:18:02.825+0000 connected to: localhost
2015-10-15T08:18:02.825+0000 exported 0 records
root@sever_name:/mnt/data# mongo db_name
MongoDB shell version: 3.0.0
connecting to: db_name
DBReplicaSet:PRIMARY> db.dip_acon_research_finals.count()
1597113
Run Code Online (Sandbox Code Playgroud) 所以我使用导出了一些集合,mongoexport
并发现了一些大整数9999999999999
被导出为的情况9.9999999999999e+13
所以有两个问题:为什么会这样,我该如何防止这种情况?
谢谢你。
我想从 mongodb 导出,其中 objectId 将在导出时转换为字符串。
ObjectId("507c7f79bcf86cd7994f6c0e").toString()
Run Code Online (Sandbox Code Playgroud)
这不适用于导出命令。我尝试了以下但显示语法错误。
./mongoexport --host localhost --db Database --collection collection_name --type=csv --out collection.csv --fields _id.toString()
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想打一个局部MongoDB数据库的转储(部分为,我需要过滤掉一些文件,有些领域)。然后,此转储将导入到另一台服务器上。
我不能使用mongodump实用程序,因为它不允许过滤字段。
我可以使用mongoexport实用程序,因为它允许过滤文档和字段。但是,文档指出mongoexport只能输出 JSON 文件并且:
不能可靠地保留所有丰富的 BSON 数据类型,因为 JSON 只能表示 BSON 支持的类型的一个子集。
我是 Mongo 的新手,正在尝试从集合中导出 JSON 文件。该> MONGOEXPORT
运作良好并创建了一个JSON文件。
{ "_id" : { "$oid" : "54c8f3fb5e24e03c473243c4" }, "username" : "Aman", "password" : "yesboss" }
{ "_id" : { "$oid" : "54c901c1953b434dabadbabf" }, "username" : "AMAN2" }
Run Code Online (Sandbox Code Playgroud)
现在,JSONLint 向我显示它不是有效 JSON 的错误。
我需要将其导入到我的 Java 项目中以从中提取值。