2013-12-16 3 views
0

Мой MongoDB документ выглядит следующим образом:MongoDB номер прирост поддокументе

{ 
     valOne: "one", 
     valTwo: "two", 
     valThree: { 
        threeOne: 0, 
        threeTwo: 0 
       } 
    } 

я хотел бы увеличивать либо «threeOne» или «threeTwo» в зависимости от запроса пользователя.

Мой код до сих пор:

var whichFieldToUpdate = request.body.field; //can be either threeOne or threeTwo 
var id = new BSON.ObjectID(request.body.id); //contains document id 

db.collection('name').update({_id: id}, {$inc: { ?????? } }, 
    function(err, result) { 

}); 

???? должно быть что-то вроде этого: {$inc: {valThree: {whichFieldToUpdate : 1 } }

+0

использовать точечную нотацию для доступа поддокументы {$ вкл: { «valThree.threeOne»: 1} – joao

+0

да я иду, что ТНХ. но проблема в том, что threeOne изменяется в зависимости от ответа и {$ inc: {'valThree.' + whichFieldToUpdate: 1}, похоже, не работает – BuildingJarl

+0

сделать это с помощью инструкции if вместо того, чтобы пытаться поставить whoFieldToUpdate динамически – joao

ответ

1
var field = 'valThree.' + request.body.field; 
var inc = {}; 
inc[field] = 1; 

db.collection('name').update({_id: id}, {$inc: inc } }, 
    function(err, result) { 

}); 
Смежные вопросы