从同一个猫鼬集合 - node js 中添加特定值
Add specific values from the same mongoose collection - node js
我在猫鼬中创建了一个集合,如下所示:
db.myservers.find()
{ "_id" : ObjectId("5783a416c9"), "text_usage" : "15", "name" : "A1", "__v" : 0 }
{ "_id" : ObjectId("57831216c9"), "text_usage" : "220", "name" : "A2", "__v" : 0 }
{ "_id" : ObjectId("5783a41asd"), "text_usage" : "100", "name" : "A3", "__v" : 0 }
我的模式工作是这样的:
var serverSchema = new Schema({
name: String,
text_usage: String
})
var myServer = mongoose.model('MyServer', serverchema)
我想将text_usage中的所有值相加并除以此列表中的对象数量 - 所以基本上找到一个平均值。但是,我的text_usage需要存储为字符串,因为它来自 API 调用,那么在将值相加之前我是否必须解析字符串?
所以我想要的最终结果是这样的:
var totalTextCount = 335;
var objectCount = 3;
var average = 111.66
我看了一下聚合,但我只处理一个集合,所以我认为这不适合我?任何帮助,不胜感激。
聚合不能更改现有数据类型,因此在这种情况下,您应该使用 find 并遍历所有数据来获取总计、计数和平均值,例如:
var totalTextCount = 0, average = 0, objectCount = 0;
MyServer.find().lean().exec(function(err, datas) {
datas.forEach(function(data) {
totalTextCount += parseInt(data.text_usage);
objectCount+= 1;
});
average = totalTextCount / objectCount;
console.log(totalTextCount, objectCount, average);
});
首先得到总数
如下Model =db.model('ServerList', serverSchema);
var userCount = serverModel.count('name');
然后遍历所有记录以查找总计
var total =0;
serverModel.find(function (err, servers) {
if (err) return console.error(err);
servers.forEach(function(server){
total += parseInt(server.text_usage);
});
})
相关文章:
- 向AngularJS目录添加JS变量
- 使用 Razor 添加 JS 代码
- 在运行时添加js文件时出现语法错误
- 如何根据窗口宽度添加js文件
- 在Cordova项目中添加.js会破坏构建过程
- 动态添加 js 到 asp.net 文件
- 添加JS时Tumblr的奇怪行为
- 如何使用 api 修改 bigcommerce 前端(在应用程序中添加 js 代码)
- 是否可以阻止requireJS自动添加.js文件扩展名
- require.js文本插件在文件名中添加“.js”
- 如何在 jquery 中添加 js var
- 在Joomla head上添加JS
- 双击和更新表字段时添加 JS/添加文本框
- 在服务器的html文件中添加.js文件作为源文件
- 在另一个文件中添加JS src
- 最早什么时候可以动态添加JS/CSS并应用它们
- 如何在eclipse中添加JS资源
- 不能添加JS文件,或任何其他,到钛项目文件夹
- ASP.. NET在页面加载时添加js文件
- 如果主体类有类添加js,如果没有添加这个js