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/