2013-12-17 43 views
2

我試圖改變基礎上,英雄的名字實力像這樣的文件:

"_id" : ObjectId("52b0d27b5dee463864000001"), 
"author" : "niko", 
"permalink" : "super_heroes" 
"hero" : [ 
    { 
     "name" : "Batman", 
     "strength" : 1, 
     "magic" : [ ], 
     "times" : [ ] 
    }, 

我無法改變它在最初嘗試:

var operator = { '$set' : { 'hero.strength' : strength } }; 

var query = { 'permalink': permalink , 'hero.name':name }; 
posts.update(query, operator, options, function(err, numModified) {...}) 

MongoError: can't append to array using string field name: strength

但看到this post後我添加了一個美元符號,它的工作:

var operator = { '$set' : { 'hero.$.strength' : strength } }; 

什麼,在一個JSON關鍵美元符號嗎?我嘗試了使用Google搜索,但是我只是想了解jQuery的一百萬個解釋。謝謝。

回答

4

這不是一個JSON運算符(沒有JSON運算符之類的東西,你可能會認爲JSON是一個字符串)。

在這種情況下,$是mongodb positional operator來執行特定位置的更新。

相關問題