MongoDB:在路径中找到太多位置(即"$")元素 [英] MongoDB: Too many positional (i.e. '$') elements found in path
问题描述
我刚升级到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屋!