Ole*_*leg 4 mongodb mongodb-query
升级到 3.0 mongo 驱动程序后,我收到更新请求的一些新错误。对于这样的更新:
db.table.update({_id: .... } , {$set : { "tags.Tag1" : true }});
Run Code Online (Sandbox Code Playgroud)
我正在接收
cannot use the part (tags of tags.Tag1) to traverse the element ({tags: null})]]
Run Code Online (Sandbox Code Playgroud)
问题是我更新的文档已经包含默认值tags:null。如果我从文档中手动删除它,更新开始正常工作。这对我来说是一些新行为,它发生在将 mongo 驱动程序从 2 更新到 3(甚至不是数据库本身)之后。
但现在我想知道如何避免这个错误。我当然可以检查“标签”是否已经定义,然后才制作$set元素或整个地图。但这意味着 3 个请求 vs 一个旧请求以及原子性等其他问题。
小智 6
虽然这是一篇旧帖子,但我认为您正在寻找的是$ 位置运算符
我猜你的“标签”是一个数组。所以上面的例子可能是这样的
db.table.update({_id: .... } , {$set : { "tags.$.Tag1" : true }});
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
7224 次 |
| 最近记录: |