2015-04-05 3 views
0

Je souhaite changer le champ value de chaîne à objet.Comment utiliser javascript var pour référencer le champ de la collection Mongo DB

...{value: "my title"}... ===> ...{value:{value:"my title ABC"}} 

Dans le shell mongo, je présente ce domaine à travers le var articlePath JavaScript. Maintenant, comment puis-je utiliser cette var pour mettre à jour la valeur du champ?

Le code suivant crée un nouveau champ articlePath au lieu d'utiliser la valeur de la variable.

var articlePath = "layout.content.header." + i + "." + j + ".value" 
var articleValue = block.value + " ABC" 
db.mycollection.update(
    {_id: catId}, 
    { 
     $set: { 
      articlePath: {value: articleValue} 
     } 
    }, 
    function(err, numberUpdated) { 
     print("--->err: ", err) 
    } 
) 

Répondre

0

Vous ne pouvez pas utiliser la notation littérale pour définir le nom d'une clé via la valeur d'une variable. Essayez de cette façon:

var update = { "$set" : { } } 
update["$set"][articlePath] = { "value" : articleValue } 
db.mycollection.update({ "_id" : catId }, update, *callback*) 
+0

merci beaucoup. Ça marche. :) – user1982334

0

Essayez extrait suivant

var articlePath = {}; 
var keyName = "layout.content.header." + i + "." + j + ".value"; 
var articleValue = block.value + " ABC"; 
articlePath[keyName] = articleValue; 

db.mycollection.update(
    {_id: catId}, 
    { 
     $set: articlePath 
    }, 
    function(err, numberUpdated) { 
     print("--->err: ", err) 
    } 
) 

Merci

+0

merci beaucoup. Ça marche. :) – user1982334