mongoexport不会将任何记录写入json输出文件

时间:2013-04-20 13:25:15

标签: mongodb mongoexport

我试图通过以下方式使用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
}

我做错了什么?

提前谢谢。

2 个答案:

答案 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+更新--dbpathunavailable

答案 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将引号解释为名称的一部分。所以当我取下它时,它运动得很好。

enter image description here

enter image description here