Mongodb 使用Mongo更新映射值文档值
我有一个像myPortCollection这样的文档Mongodb 使用Mongo更新映射值文档值,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个像myPortCollection这样的文档 { "_id" : ObjectId("55efce10f027b1ca77deffaa"), "_class" : "myTest", "deviceIp" : "10.115.75.77", "ports" : { "1/1/x1" : { "portId" : "1/1/x1", healthState":"Green" 我试图更新 db
{
"_id" : ObjectId("55efce10f027b1ca77deffaa"),
"_class" : "myTest",
"deviceIp" : "10.115.75.77",
"ports" : {
"1/1/x1" : {
"portId" : "1/1/x1",
healthState":"Green"
我试图更新
db.myPortCollection.update({
{ deviceIp:"10.115.75.77"},
{ "chassis.ports.1/1/x10.rtId":"1/1/x10" },
{ $set: { "chassis.ports.1/1/x10.healthState" : "Red" }
})
但是我得到的错误是,提到的属性名称是错误的。请帮助为嵌入式地图文档更新正确指定语法。查询部分是错误的,因为您已将条件拆分为两个文档。应该是这样的: db.myPortCollection.update { deviceIp:10.115.75.77, 机箱。端口。1/1/x10。rtId:1/1/x10 }, {$set:{chassis.ports.1/1/x10.healthState:Red}
然后,只要查询与问题中未显示的有效数据相匹配,则将设置或添加指定的字段。谢谢Blakes,我也尝试过类似的方法,但在>db.cachedNodeChassis.update{deviceIp:10.115.75.77,chassis.ports.1/1/x10.p ortId:1/1/x10},{$set:{chassis.ports.1/1/x10.duplex:test}中仍然存在一些错误2015-09-09T14:28:18.793+0530 E查询语法错误:意外number@NarayanaPachava请从上面剪贴。您的错误表明您正在键入内容,并且没有正确引用字段。检查所有点符号字段是否完全包含在引号中。在那里的语句中似乎也有supurflous大括号{}。至少再和上面的比较一下。非常感谢@Blakes Seven,它成功了!!感谢您的及时回复。注意:我有一个问题,如果字段healthState不可用,那么modified records集合将变为0,我们如何强制在同一集合中创建列并更新以下**>db.cachedNodeChassis.update的healthState属性{deviceIp:10.115.75.77,chassis.ports.1/1/x10.portId:1/1/x13},{$set:{chassis.ports.1/1/x13.healthState:Red}}WriteResult{nMatched:1,nUpserted:0,nModified:0}@NarayanaPachava。这就是StackOverflow的工作原理。它不是一个讨论论坛或邮件列表,而是一个问题和答案的存储库。我知道,不断询问为你所有问题提供答案的人是很有诱惑力的,但这不是它的工作原理。如果你有更多问题,那么就添加它们。看看你的声誉已经提高了既然你接受了答案。多问,多接受,解锁,最重要的是删除广告。