Node.js 如何在nodejs/mongoose/for$out中提供集合名称
我有一个名为Node.js 如何在nodejs/mongoose/for$out中提供集合名称,node.js,mongodb,migrate,Node.js,Mongodb,Migrate,我有一个名为pin_count的字段,其中有另一个名为pins的字段的计数,但由于逻辑中断,两个字段的计数不匹配,因此我正在使用migrate mongo编写迁移脚本,下面就是我所做的。但不知道为什么它不起作用 'use strict'; const BPromise = require('bluebird'); const types = ['pins`]; module.exports = { up(db) { return BPromise.resolve(types)
pin_count
的字段,其中有另一个名为pins
的字段的计数,但由于逻辑中断,两个字段的计数不匹配,因此我正在使用migrate mongo
编写迁移脚本,下面就是我所做的。但不知道为什么它不起作用
'use strict';
const BPromise = require('bluebird');
const types = ['pins`];
module.exports = {
up(db) {
return BPromise.resolve(types).mapSeries(col => {
return db.collection(col).aggregate([
{ '$addFields': {
'pin_count': { '$size': '$pins'}
}},
{ "$out": col }
]);
});
},
/**
* No need to have down script since this is a correction of the data
*/
down: function (db) {
}
};
我测试了以下各项,效果良好:
db.pins.aggregate([
{ '$addFields': {
'pin_count': { '$size': '$pins'}
}},
{ "$out": "pins" }
]);
但是,migrate-mongo()()插件中的相同功能不起作用
'use strict';
const BPromise = require('bluebird');
const types = ['pins`];
module.exports = {
up(db) {
return BPromise.resolve(types).mapSeries(col => {
return db.collection(col).aggregate([
{ '$addFields': {
'pin_count': { '$size': '$pins'}
}},
{ "$out": col }
]);
});
},
/**
* No need to have down script since this is a correction of the data
*/
down: function (db) {
}
};
文件结构:
{"_id" : ObjectId, "pins" : [ 'da', 'dal' ], "pin_count" : 4}
请添加原始收藏中的样本文档
“\u id”:ObjectId,“pins”:['da','dal'],“pin\u count”:4,
@felix@chridam没有任何创意。请添加其他细节,以突出显示您所需的内容。正如目前编写的,我们不知道类型
解析为什么。您是否尝试过使用一些示例文档在单独的测试集合上测试该管道?我厌倦了db.pins.aggregate([{'$addFields':{'pin_count':{'$size':'$pins'}}},{'$out:'pins}])代码>工作正常,但不是问题中的那个。请添加原始集合中的示例文档“\u id”:ObjectId,“pins”:['da','dal'],“pin\u count”:4,
@felix@chridam没有任何创意。请添加其他细节,以突出显示您所需的内容。正如目前编写的,我们不知道类型
解析为什么。您是否尝试过使用一些示例文档在单独的测试集合上测试该管道?我厌倦了db.pins.aggregate([{'$addFields':{'pin_count':{'$size':'$pins'}}},{'$out:'pins}])代码>工作正常,但不是问题中的那个。