我试图通过以下方式使用mongoexport从MongoDB导出json文件:
$ mongoexport --db db --collection ds --dbpath ~/db --out ds.json
exported 0 records
Sat Apr 20 23:13:18 dbexit:
Sat Apr 20 23:13:18 [tools] shutdown: going to close listening sockets...
Sat Apr 20 23:13:18 [tools] shutdown: going to flush diaglog...
Sat Apr 20 23:13:18 [tools] shutdown: going to close sockets...
Sat Apr 20 23:13:18 [tools] shutdown: waiting for fs preallocator...
Sat Apr 20 23:13:18 [tools] shutdown: closing all files...
Sat Apr 20 23:13:18 [tools] closeAllFiles() finished
Sat Apr 20 23:13:18 [tools] shutdown: removing fs lock...
Sat Apr 20 23:13:18 dbexit: really exiting now
我不明白为什么创建的json文件为空,因为数据库实际上包含以下数据:
$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use ds
switched to db ds
> db.ds.find().pretty()
{
"_id" : "1_522311",
"chr" : 1,
"kg" : {
"yri" : {
"major" : "D",
"minor" : "A",
"maf" : 0.33036
},
"ceu" : {
"major" : "C",
"minor" : "A",
"maf" : 0.05263
}
},
"pos" : 522311
}
{
"_id" : "1_223336",
"chr" : 1,
"kg" : {
"yri" : {
"major" : "G",
"minor" : "C",
"maf" : 0.473214
},
"ceu" : {
"major" : "C",
"minor" : "G",
"maf" : 0.017544
},
"jptchb" : {
"major" : "C",
"minor" : "G",
"maf" : 0.220339
}
},
"pos" : 223336
}
我做错了什么?
提前谢谢。
答案 0 :(得分:3)
您似乎有一个名为ds
的数据库:
> use ds
switched to db ds
use ds
将当前数据库切换到ds
数据库(shell中的db
只是当前数据库的别名)。
然后,您还有一个名为ds
的集合:
> db.ds.find().pretty()
因此,这意味着您拥有一个ds
数据库,其中包含ds
个集合(ds.ds
)。
然后你应该使用这样的导出,--db
选项设置为ds
(假设数据库的路径是正确的):
mongoexport --db ds --collection ds --dbpath ~/db --out ds.json
3.0+更新:--dbpath
为unavailable。
答案 1 :(得分:1)
我知道这个答案可能不满足于这个问题,但我希望它能帮助人们挣扎 mongoexport不会将任何记录写入json输出文件
我的问题是我在使用引号。例如:
$mongoexport --db 'my-database' --collection 'my-collection' --out ds.json
但是正确的查询是(没有引号):
$mongoexport --db my-database --collection my-collection --out ds.json
当我执行$mongodump
时,我发现了这一点,并创建了带引号的文件夹。这对我来说非常疏远,但我知道mongoexport将引号解释为名称的一部分。所以当我取下它时,它运动得很好。