node.js - 从 mongoose findOne 查询中获取子文档的 _id

标签 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}) 按号码属性搜索名字和姓氏,以更新名字和姓氏。我正在按以下方式执行更新操作:-

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”变量中,以便可以进行此更新

最佳答案

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

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

关于node.js - 从 mongoose findOne 查询中获取子文档的 _id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52835632/

相关文章:

node.js - Node-machine-id 包不工作

基于 $in 的 MongoDB 索引?

Node.js、mongodb 和过滤查询

mongodb - 我应该增加 MongoDB oplog 文件的大小吗?

javascript - Mongoose 通过子文档的_id查找文档

node.js - Mongoose 对子文档中的项目进行计数

angularjs - 获取错误平均值应用程序

angularjs - meanjs - Angular 未定义

javascript - 发送预定消息

node.js - 如何计算数组mongodb查询中错误值的数量