作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
升级到 3.0 mongo 驱动程序后,我在更新请求中收到一些新错误。对于这样的更新:
db.table.update({_id: .... } , {$set : { "tags.Tag1" : true }});
我收到了
cannot use the part (tags of tags.Tag1) to traverse the element ({tags: null})]]
问题是我更新的文档已经包含 tags
的默认值:null。如果我手动将其从 document 中删除,更新将开始正常工作。这对我来说是一些新行为,它发生在将 mongo 驱动程序从 2 更新到 3(甚至不是数据库本身)之后。
但现在我想知道如何避免这个错误。我当然可以检查“标签”是否已经定义,然后才将 $set
设置为元素或整个 map 。但这意味着 3 个请求 vs 一个旧问题和其他问题,如原子性。
最佳答案
虽然这是一篇旧文章,但我认为您正在寻找的是 $ positional operator
我猜你的“标签”是一个数组。所以上面的例子可能是这样的
db.table.update({_id: .... } , {$set : { "tags.$.Tag1" : true }});
希望对您有所帮助!
关于Mongodb不能使用部分(...)遍历元素({... : undefined})],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39088123/
我是一名优秀的程序员,十分优秀!