从猫鼬的findOne查询中获取子文档的_id

时间:2018-10-16 12:37:10

标签: node.js mongodb mongoose

The schema of my Sample model is:-

var nameSchema = new mongoose.Schema({
  firstname:String,
  lastname:String
})

var sampleSchema= new mongoose.Schema({
    number: {
      type: String
    },
    name :{
      type : [nameSchema]
    }
  });

我正在尝试通过使用Sample.findOne({number:number})按其number属性搜索姓氏和名字来更新它们。并且我以以下方式执行更新操作:-

module.exports.updateNumber = function(req, res){
  var number= req.body.number;
  var lname= req.body.lname;
  var fname= req.body.fname;
  Sample
   .findOne({number:number})
   .select('name')
   .exec(function(err, doc){
     console.log(doc)

    var this_id;

    var  thisService = doc.name.id('this_id');
       thisService.firstname=fname;
       thisService.lastname=lname;

       doc.save(function(err, update) {
         if (err) {
           res
             .status(500)
             .json(err);
         } else {
           res
             res.render('done')
         }
       });
     })


}

如果我在控制台日志中得到的输出是:

{ _id: 5bc5d71f47ff14361c0639d1,
  name:
   [ { _id: 5bc5d71f47ff14361c0639d2,
       firstname: 'firstname',
       lastname: 'lastname' } ] }

有什么办法,我可以将_id:5bc5d71f47ff14361c0639d2存储在“ this_id”变量中,以便进行此更新

1 个答案:

答案 0 :(得分:1)

name是一个数组,因此,如果您想要第一个_id,那么name[0]._id就足够了;如果您想要一个包含_id的所有值的数组,那么{{1} }会为您提供name.map((person) => person._id)

的数组

However, more details about the context of this object would help give a better answer.