gpt4 book ai didi

javascript - Mongoose — 使用聚合创建带有 $sum 的新属性

转载 作者:行者123 更新时间:2023-11-30 08:33:29 25 4
gpt4 key购买 nike

我正在尝试在所有包含数字数组总和的文档中添加一个新字段。

这是架构(为简洁起见删除了不相关的字段):

 var PollSchema = new Schema(
{
votes: [Number]
}
);

我建立模型:

PollModel = mongoose.model('Poll', PollSchema);

然后我使用聚合创建一个包含投票数组总和的新字段。

PollModel.aggregate([
{
$project: {
totalVotes: { $sum: "$votes"}
}
}
]);

当我启动我的服务器时,我没有收到任何错误;但是,尚未创建 totalVotes 字段。我用了this文档来帮助我。它同样使用了 $sum 运算符,我完全按照文档中的说明进行操作,但没有结果。

最佳答案

MongoDb 聚合不会将其结果保存到数据库中。您只需在回调中获得内联聚合的结果。因此,在聚合之后,您需要对数据库进行多次更新:

PollModel.aggregate([
{
$project: { totalVotes: { $sum: "$votes"} }
}]).exec( function(err, docs){
// bulk is used for updating all records within a single query
var bulk = PollModel.collection.initializeUnorderedBulkOp();

// add all update operations to bulk
docs.forEach(function(doc){
bulk.find({_id: doc._id}).update({$set: {totalVotes: doc.totalVotes}});
});

// execute all bulk operations
bulk.execute(function(err) {
});
})
});

关于javascript - Mongoose — 使用聚合创建带有 $sum 的新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34526708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com