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

Node.js 如何从MongoDB中的集合导出单个字段?,node.js,mongodb,mongodump,mongoexport,Node.js,Mongodb,Mongodump,Mongoexport,我想从单个集合导出单个字段。 像集合名称是products,字段名称是tag。 所有标记将创建新集合。我试过这个命令: mongodump --host 192.168.1.46 --port 27017 --db myDb --collection products --fields tag -o bson --out C:\Users\Desktop\tag mongodump不支持所选字段的备份。但您可以使用mongoexport/mongoimport将选定字段备份为: mongo

我想从单个集合导出单个字段。 像集合名称是products,字段名称是tag。
所有标记将创建新集合。我试过这个命令:

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

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

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

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

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

因此,让我们先在我们的系列中插入一些产品:

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")
        ]
}
我们现在可以编写一个简单的aggregation查询来遍历所有文档

db.products.aggregate([
    {$unwind: '$tags'},
    {$group: {_id: '$tags' }},
    {$out: 'productTags'}
]);
{$unwind:'$tags'}
将在每个标记的文档中解构标记数组字段。 然后,
{$group:{{u id:'$tags'}}
将对每个项目进行分组,并为每个标记创建一个新文档。 然后,
{$out:'productTags'}
将为我们创建一个带有文档输出的productTags集合

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

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

因此,让我们先在我们的系列中插入一些产品:

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")
        ]
}
我们现在可以编写一个简单的aggregation查询来遍历所有文档

db.products.aggregate([
    {$unwind: '$tags'},
    {$group: {_id: '$tags' }},
    {$out: 'productTags'}
]);
{$unwind:'$tags'}
将在每个标记的文档中解构标记数组字段。 然后,
{$group:{{u id:'$tags'}}
将对每个项目进行分组,并为每个标记创建一个新文档。 然后,
{$out:'productTags'}
将为我们创建一个带有文档输出的productTags集合

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

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

对不起,我的意思是什么?如果我在同一个命令中使用mongodump的mongoexport-istead,那么它也不起作用。对不起,你的意思是什么?如果我在同一个命令中使用mongodump的mongoexport-istead,那么它也不起作用。你有
产品
集合中的文档示例吗?你能澄清一下
所有标记都会起什么作用吗创建新收藏。
意味着什么?你只是想找到所有标签并在同一个数据库中创建一个新集合吗?你好,Kevin,我只是想从集合中导出一个字段,并想从这些导出的字段中创建一个新集合。例如(如果products collection有标签字段,它是字符串,我只想从products collection导出所有标签,然后导出的标签将创建一个新的集合,如标签),希望您现在更好地理解。请参阅我的答案,是否符合该标准您是否有
产品
集合中的文档示例?您能否澄清
所有标签将创建新集合的内容。
的含义?你只是想找到所有标签并在同一个数据库中创建一个新集合吗?你好,Kevin,我只是想从集合中导出一个字段,并想从这些导出的字段中创建一个新集合。例如(如果products collection有标签字段,它是字符串,我只想从products collection导出所有标签,然后导出的标签将创建一个新的集合,如标签),希望您现在更好地理解。请参阅我的答案,应该符合该标准