mongodb中另一个集合的增量字段
Increment field of another collection in mongodb
我创建了两个集合,一个用于企业,另一个用于员工,它们的模式如下:
var mongoose= require('mongoose');
var Enterprise= new mongoose.Schema({
name:{type:String},
email:{type:String},
sector:{type:String},
employees: {type:Number,default:0}
});
module.exports={
Enterprise:Enterprise
};
var mongoose = require('mongoose');
var employee = new mongoose.Schema({
enterprise:{type: String},
name:{type:String},
email:{type:String},
password:{type:String},
gender:{type:String},
});
module.exports = {
employee:employee
};
my add employee route,
var mongoose = require('mongoose');
var q = require('q');
var employee = mongoose.model('employee');
var enterprise = mongoose.model('enterprise');
var addEmployee = function(req, res) {
newEmployee = new employee();
newEmployee.enterprise = req.params.enterprise;
newEmployee.name = req.params.name;
newEmployee.email = req.params.email;
newEmployee.gender = req.params.gender;
function detailSave() {
var deferred = q.defer();
newEmployee.save(function(err, data) {
if (err) {
res.send(500);
console.log('couldnt save employee details');
deferred.reject({errmessage: 'couldnt save employee details', err: err});
} else {
res.send(200);
deferred.resolve({data: data});
}
});
return deferred.promise;
}
function incrementEmployee(doc) {
var deferred = q.defer();
enterprise.findOneAndUpdate({ 'name': doc.enterprise }, { $inc: { 'employees': 1 } },
function(err, num) {
if (err) {
deferred.reject({errmessage: 'couldnt incrementEmployee', err: err});
res.send(500);
console.log('couldnt incrementEmployee');
} else {
res.send(200);
deferred.resolve({num:num});
}
});
return deferred.promise;
}
detailSave()
.then(incrementEmployee)
.then(function(success) {
console.log('success', success);
res.json(200, success);
})
.fail(function(err) {
res.json(500, err);
})
.done();
};
module.exports = {
addEmployee: addEmployee
};
问题是当我添加员工时,企业集合中的employees字段不增加
我认为您的查询不工作,因为doc.enterprise
是null
根据你的意见。
试着像这样给你的{'name': doc.data.enterprise}
CC_4
function incrementEmployee(doc) {
var deferred = q.defer();
enterprise.findOneAndUpdate({
'name': doc.data.enterprise
}, {
$inc: {
'employees': 1
}
},
function(err, num) {
if (err) {
deferred.reject({
errmessage: 'couldnt incrementEmployee',
err: err
});
res.send(500);
console.log('couldnt incrementEmployee');
} else {
res.send(200);
deferred.resolve({
num: num
});
}
});
return deferred.promise;
}
相关文章:
- 如何使用javascript var引用Mongo DB集合's字段
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- MeteorJS:用户集合如何公开新字段
- 流星.js按字段中的值筛选集合
- 如何计算mongodb中两个集合中一个字段的不同值的数量
- 如何在路由页面上显示集合字段(带把手)
- Mongo-Aggregate:如何与另一个集合中的字段进行比较
- Lodash:如何向集合中的所有值添加新字段
- Accounts.onCreateUser 未将字段添加到 Meteor 的用户集合中
- 集合字段中的流星计算值
- 如何在更新时从 mongodb 集合中删除字段
- 将特定字段从流星集合文档中检索到JS文件中并去除HTML标签
- 在节点中使用计数器集合.js递增 ID 字段
- 在循环访问集合时将动态 ID 分配给隐藏字段
- 在流星中向用户集合添加字段的正确方式
- 根据日期和其他字段聚合Mongo集合中的数据,并进行计数
- JS/MongoDB:检查对象(集合文档)中是否存在嵌套字段
- 正在更新mongoldb集合中的单个字段
- 如何在JSON数组字段的基础上从主干集合中提取模型
- 如何使用Javascript迭代DAO字段集合