我的模型如下:
var eventSchema = new mongoose.Schema({
'eventTitle': String,
'location': String,
'startDate': String,
'endDate': String,
'startTime': String,
'endTime': String,
'createdBy': mongoose.Schema.Types.ObjectId, // Here we will store the _ID from the user EOSP.
'attendants': {
'seekers': [mongoose.Schema.Types.ObjectId],
'employers': [
// {
// 'id': mongoose.Schema.Types.ObjectId,
// 'boothVisits': Number,
// }
],
},
'isFinished': {'type': Boolean, 'default': false},
'uploadedResumes': Number,
'downloadedResumes': Number,
});
这是我的代码:
Event.findByIdAndUpdate(eventId, {$inc:{`attendants.employers[${req.params._id}].boothVisits`: 1}, $upsert: true});
问题是,如果我尝试执行此操作^^^^^我的节点对我大喊:
/home/alex/Documents/Projects/ontario-job-portal/routes/employer.js:58 Event.findByIdAndUpdate(eventId,{$ inc:{
attendants.employers[${req.params._id}].boothVisits
:1},$ upsert:true}); ^^^^^^^^^^^^^^^^^^^^^^^^^SyntaxError:意外的模板字符串
但是,如果我尝试这样做:
const path = `attendants.employers[${req.params._id}].boothVisits`;
Event.findByIdAndUpdate(eventId, {$inc: {path: 1}, $upsert: true});
我的IDE告诉我实际上在查询中未使用path
变量。我该如何解决?我真的需要ID是动态的。
答案 0 :(得分:1)
尝试以下查询
在mongo GUI上测试。
const mongoose = require('mongoose');
db.getCollection('content')
.update({
'attendants.employers.id': mongoose.Types.ObjectId((req.params._id)
}, {
$inc: { "attendants.employers.$.boothVisits": 1 }
})
答案 1 :(得分:0)
尝试吗?:
Event.findByIdAndUpdate(eventId,
{
$inc: { 'attendants.employers.boothVisits': {$in: [req.params._id] }: 1},
$upsert: true
});