Я пытаюсь обновить мой счетчик определенного date
, который находится в массиве visitedOn
, и если этот объект в этом массиве отсутствует, тогда мне нужно добавить его в массив.
Вот моя Схема VisitedCount
var visitCounterSchema=new Schema({
profile:{ type: Schema.Types.ObjectId, ref: 'profile' },
counter:{type:Number,default:0}, // Total Number of counter
visitedOn:[ ] // Counter with particular Month { "counter" : 0,"date" : ISODate("2018-08-30T18:30:00.000Z")}
});
Я сохранил запись VisitedCounter на PostSave из Profile
Схема.
profileSchema.post('save', function(doc) {
var data = {
profile:doc._id,
counter:0, // Total counter
visitedOn:[{
date: new Date(`${(new Date()).getMonth()+1}/01/${(new Date()).getFullYear()}`), // date will be the first of current month
counter:0 // Counter for that particular month.
}]
}
var visitsCounters = new VisitsCounter(data);
visitsCounters.save(function (err, dta) {
if (err) {
console.log('error occured..' + err);
}
});
});
В профиле сохранения будет сохранена запись посещенного счета, как показано ниже:
{
"_id" : ObjectId("5bd021378a2680487bf201c5"),
"profile" : ObjectId("5bd021378a2680487bf201c4"),
"visitedOn" : [
{
"counter" : 0,
"date" : ISODate("2018-09-30T18:30:00.000Z")
}
],
"counter" : 0,
"__v" : 0
}
Теперь увеличить счетчик определенной даты, котораяуже присутствует в visitedOn
Array, это прекрасно работает
VisitsCounter.findOneAndUpdate({
profile: req.params.id,
"visitedOn.date": new Date(`${(new Date()).getMonth()+1}/01/${(new Date()).getFullYear()}`)
}, {
$inc: {
counter: 1,
"visitedOn.$.counter": 1
}
},{
new: true
},
function (er, dt) {
if (er) {
console.log('error occured..' + er);
} else {
return res.json(dt);
}
});
Но для добавления Date и Counter , если нет, я должен использовать $ addToSet согласноMongoDB doc, но это не добавление записи в соответствии с моим требованием.
{
$addToSet: {
"visitedOn": {
'date': new Date(`${(new Date()).getMonth()+1}/01/${(new Date()).getFullYear()}`),
'counter': 1
}
},
}
- Это потому, что у меня есть visitOn.date , поэтому он не работает, есть ли другой способ добавить объект в массив, если он отсутствует, и может увеличиваться при его наличии.