将集合文档插入mongodb中的另一个集合

时间:2016-05-25 06:25:23

标签: node.js mongodb mongoose

我在mongodb数据库中有两个不同的文档集合。在我的新兵收藏中,我有很多文件。我想将招募集合中的文档添加到员工集合中 这是我的代码的一部分

function register(){
        $http({
            url:'/employee',
            method:'post',
            data:data // data is what i get from findById query.
        }).then(function(result){
            vm.cancel();
            vm.toast();
        },function(err){
            console.log(err);
        })

这里的数据是我从新兵集合中的findById获得的数据。现在我希望存储在员工集合中的相同数据。我试过这样:

var emp = require('../models/employees.js');
 router.post('/',function(req,res){
console.log(req.body);
var register = new emp(req.body);
//console.log(register);
register.save(function(err, respond) {
    if (err) {
        throw err;
    } else {
        res.json(respond);
    }
})
});

我认为我的控制台向我显示的代码很好

MongoError: E11000 duplicate key error index: humanResource.employees.$_id_ dup
 key: { : ObjectId('57395146b4c73790056a3770') }

任何人都建议我如何在其他馆藏中插入此类文件。

1 个答案:

答案 0 :(得分:1)

您的错误是说您正在创建的文档中有一个已存在于employees集合中的_id。 问题是您正在接收招聘数据并直接将其与从招聘人员传递的_id一起传递给员工集合。您应该尝试复制数据但不包括_id字段。 Mongo将自动为您的员工集合生成_id。 像这样的东西,

var emp = require('../models/employees.js');
router.post('/',function(req,res){
      console.log(req.body);
       delete req.body._id;
      var register = new emp(req.body);
      register.save(function(err, respond) {
if (err) {
      throw err;
} else {
     res.json(respond);
}
});