m0sk1t
@m0sk1t
SPA web-developer

Как сделать update используя составное имя поля в MongoDB через NodeJS?

имеется такая таблица:
{
	"_id" : ObjectId("5379b1b81cdcaf4db70cc16f"),
	"hash" : "123",
	"serverList" : {
		"server1" : {
			"host": "http://192.168.5.138:80/",
                        "url" : "/123/",
			"ssid" : "321"
		},
		"server2" : {
			"host": "http://192.168.5.144:80/",
                        "url" : "/123/",
			"ssid" : "321"
		}
	}
}

Необходимо иногда делать update полям ssid и url. Пытаюсь сделать так:
var data = JSON.parse(params).result, ssid = 'serverList.'+server[i]+'.ssid', url = 'serverList.'+server[i]+'.url';
leaders.update({'hash':request.cookies.hash}, {'$set':{ ssid: data['ssid'], url: data['sessionurl']}}, function(e, d) {
	console.dir(e);
	console.dir(d);
});
// Где server[i] это 'server1' или 'server2', а в data приходят нужные url и ssid

Но, наколько я понимаю, строка которая содержится в ssid и url не передается, а передается тупо ssid и url как значение поля. Как правильно составить строку запроса, чтобы update состоялся по нужному (динамически сформированному) пути?
  • Вопрос задан
  • 2588 просмотров
Решения вопроса 1
m0sk1t
@m0sk1t Автор вопроса
SPA web-developer
Решил пока что формировать запрос на изменение как объект...
var $set = {};
$set['$set'] = {};
$set['$set']['serverList.'+i+'.ssid'] = data['ssid'];
$set['$set']['serverList.'+i+'.url'] = data['sessionurl'];

И передавать в теле запроса этот объект. Есть ли более красивые и элегантные решения?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы