Mongodb:JSON 密钥中的美元符号 (.$.) 有什么作用



我试图根据英雄的名字在这样的文档中更改强度:

"_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.

但是在看到这篇文章后,我添加了一个美元符号,它起作用了:

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

JSON密钥中的美元符号有什么作用? 我试着在谷歌上搜索它,但我只是想出了一百万个关于jQuery是什么的解释。 谢谢。

这不是

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

在此上下文中,$ 是一个 mongodb 位置运算符,用于在特定位置执行更新。

最新更新