mongodb不会将$作为索引更新查询

时间:2017-02-14 06:57:08

标签: node.js mongodb

我将我的mongo实例从版本2.4升级到3.4,并且我的所有更新查询都停止工作,我将$作为索引传递。 如果我在查询中传递静态0或1它工作正常,但$的早期语法根本不起作用。

以下是我的询问:

db.collection('users').update({"email": "u1@u1.com","companies":{"$elemMatch":{"id":"1487006991927"}}}, 
    {
        $set: {
            "companies.$.details" : {"company_name":"hey updated"}
        }
    });

我得到的回应:

{ result: { _t: 'UpdateResponse', ok: 1, n: 1, nModified: 1 },

当我在mongo vesrion 2.4上时,这完美无缺,但现在已经不行了。我不能总是传递静态0/1或索引,这是正确的方法吗?

另请注意:响应说1条记录已被修改,但实际上没有任何修改。

{
    "_id": "589aa3509a248a3d7a01b784",
    "businessAndPersonal": "true",
    "companies": [
        {
            "details": {
                "company_name": "afsfhey updated"
            },
            "locations": [],
            "websites": [],
            "id": "1487006991927"
        },
        {
            "details": {
                "company_name": "hey updated"
            },
            "locations": [],
            "websites": [],
            "id": "1487007435955"
        }
    ]
}

提前致谢

1 个答案:

答案 0 :(得分:0)

回答我自己的问题

我正在使用CosmosDB mongodb服务,因为它们不支持mongodb的位置运算符

Here是通过&#39; <&strong>查询支持来讨论位置数组更新的链接