MongoDB:在路径中找到太多位置(即"$")元素 [英] MongoDB: Too many positional (i.e. '$') elements found in path

查看:260
本文介绍了MongoDB:在路径中找到太多位置(即"$")元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚升级到Mongo 2.6.1,以前运行的一条更新语句未返回错误.更新语句为:

I just upgraded to Mongo 2.6.1 and one update statement that was working before is not returning an error. The update statement is:

db.post.update( { 'answers.comments.name': 'jeff' },
    { '$set': {
        'answers.$.comments.$.name': 'joe'
    }},
    { multi: true }
)

我得到的错误是:

WriteResult({
    "nMatched" : 0,
    "nUpserted" : 0,
    "nModified" : 0,
    "writeError" : {
        "code" : 2,
        "errmsg" : "Too many positional (i.e. '$') elements found in path 'answers.$.comments.$.createUsername'"
    }
})

当我仅更新一个元素而不是两个元素的深度时(即answers.$.name而不是answers.$.comments.$.name),它可以正常工作.如果我将mongo实例降级到2.6以下,它也可以正常工作.

When I update an element just one level deep instead of two (i.e. answers.$.name instead of answers.$.comments.$.name), it works fine. If I downgrade my mongo instance below 2.6, it also works fine.

推荐答案

位置运算符只能在查询中使用一次.这是一个限制,有待改进的公开票证: https://jira.mongodb.org/browse/SERVER-831

The positional operator can be used only once in a query. This is a limitation, there is an open ticket for improvement: https://jira.mongodb.org/browse/SERVER-831

这篇关于MongoDB:在路径中找到太多位置(即"$")元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆