Digamos que você queira atualizar dinamicamente um elemento de um array que pertence a uma determinada coleção. Então, basicamente você tem algum modelo que se parece com:
Collection.name = {
somestring:'some name',
anArray:[]
}
Lendo a documentação aqui:
http://docs.mongodb.org/manual/reference/method/db.collection.update/#update-an-element-by-position e ali: http://docs.mongodb.org/manual/reference/operator / update / posicional / ou aqui:
Você pode obter informações muito legais. Infelizmente, ao usar algumas bibliotecas como mongoose ou frameworks como meteorjs, você pode lutar com o fato de que tem um campo dinâmico para o índice de array e a notação de ponto falha. Então, em vez desta simples linha de código:
db.bios.update(
{ _id: 1 },
{ $set: { "contribs.1": "ALGOL 58" } }
)
Você acaba sem nada 🙂
Quem vem ao resgate, a criação do objeto!
A ideia é simplesmente criar o objeto setter
para atualizar a coleção. Portanto, em vez de escrever claramente, { "contribs.1": "ALGOL 58" }
você preferirá escrever:
var setter = {};
setter['contribs.1'] = 'ALGOL 58';
db.bios.update(
{ _id: 1 },
{ $set: setter}
)
Assim, você pode reconectá-lo com o valor de alguns parâmetros:
var setter = {};
setter['contribs'+req.index] = 'ALGOL 58';
db.bios.update(
{ _id: 1 },
{ $set: setter}
)
E voilà funciona! Aproveitar !