如何从MongoDB中的集合中导出单个字段?

时间:2016-12-17 06:51:50

标签: node.js mongodb mongodump mongoexport

我想从单个集合中导出单个字段。 与集合名称一样,产品字段名称标记
所有标签都将创建新的集合。我试过这个命令:

mongodump --host 192.168.1.46 --port 27017 --db myDb --collection products --fields tag -o bson  --out C:\Users\Desktop\tag

2 个答案:

答案 0 :(得分:1)

mongodump不支持所选字段的备份。但您可以使用mongoexport / mongoimport将所选字段备份为:

mongoexport -c test --db testing -f key --out dump.json

答案 1 :(得分:1)

所以我们首先将一些产品插入我们的产品系列:

db.products.insertMany([
    { name: 'TV', tags: ['livingroom', 'electronics']},
    { name: 'Radio', tags: ['bedroom', 'electronics']},
    { name: 'Computer', tags: ['bedroom', 'electronics']}
]);

{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("586bae0ec5a9a94b2674943d"),
                ObjectId("586bae0ec5a9a94b2674943e"),
                ObjectId("586bae0ec5a9a94b2674943f")
        ]
}

我们现在可以编写一个简单的聚合查询来查看所有文档

db.products.aggregate([
    {$unwind: '$tags'},
    {$group: {_id: '$tags' }},
    {$out: 'productTags'}
]);

{$unwind: '$tags'}会将标签数组字段解构为每个标签的文档。 然后{$group: {_id: '$tags' }}将对每个项目进行分组,并为每个标记创建一个新文档。 然后{$out: 'productTags'}将为我们创建一个带有文档输出的productTags集合。

现在,如果我们查询productTags集合,我们会得到以下输出:

> db.productTags.find()
{ "_id" : "bedroom" }
{ "_id" : "electronics" }
{ "_id" : "livingroom" }