Я написал запрос на обновление в MongoDB/NodeJS, который удаляет объекты из массива документа на основе параметров, которые я определяю. После того, как я вытащил эти объекты, я хотел бы увеличить другую переменную в документе в зависимости от того, сколько документов было изменено в результате запроса на обновление.Использование MongoDB/NodeJS, как я могу увеличивать число документов, измененных в запросе обновления?
Вот пример одного из моих событий документов:
{
"_id" : ObjectId("575ed7fca7b89bb4027dded9"),
"dateCreated" : "6/13/2016",
"latitude" : "56.294786195890076",
"longitude" : "-43.59161567687988",
"instructorName" : "Test User",
"instructorEmail" : "[email protected]",
"instructorRating" : 5,
"eventName" : "We gon exercise",
"eventDescription" : "We gon exercise",
"spacesAvailable" : 15,
"streetAddress" : "123 wer",
"city" : "rty",
"state" : "NY",
"zip" : "12332",
"date" : "06/21/2016",
"startTime" : "12:00",
"endTime" : "02:10",
"tags" : [
"Cardio",
"Crossfit"
],
"price" : 5,
"attendies" : [
{
"_id" : ObjectId("5759cfcdb71d80fb2d1203ef"),
"name" : "Buddy Loester",
"email" : "[email protected]",
"timeStamp" : 1467048318510,
"payed" : true
},
{
"_id" : ObjectId("574f257b05086e2c7f7940ca"),
"name" : "Trainer Trainer",
"email" : "[email protected]",
"timeStamp" : 1467055627894,
"payed" : true
}
],
"unpayed" : 0
}
Вот мой код, чтобы дать лучшую визуализацию:
var eventCollection = req.db.get('events');
// get current time since epoch in milliseconds
var milliSinceEpoch = new Date().getTime();
eventCollection.update(
{"attendies.payed" : {$eq : false}},
{
$pull:
{
"attendies" : {"timeStamp": {$lt: milliSinceEpoch /*- 600000*/}}
},
$inc:
{
spacesAvailable: numberAffected
}
},
{
multi: true
}, function(err, numberAffected) {
console.log(numberAffected);
return res.end();
}
);
Если я указываю «numberAffected» в части запроса к '1', то он работает так, как ожидалось, и увеличивается на 1. Однако я хотел бы увеличить число затронутых.
Я знаю, что этот код не будет работать с 'numberAffected' в запросе. Использование 'numberAffected' в обратном вызове действительно возвращает количество документов, измененных моим запросом.
Существует ли способ в MongoDB делать то, что я пытаюсь сделать?