JSON密钥中的美元符号(。$。)有什么作用?

时间:2013-12-17 23:01:57

标签: javascript json mongodb

我试图根据这样的文档中的英雄名称来改变力量:

"_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键中的美元符号是做什么的?我试过谷歌搜索它,但我只是想出了一些关于jQuery的解释。谢谢。

1 个答案:

答案 0 :(得分:6)

这不是JSON运算符(没有JSON运算符这样的东西。你可能认为JSON是一个字符串)。

在此上下文中,$是mongodb positional operator以在特定位置执行更新。