Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用Mongo更新映射值文档值_Mongodb_Mongodb Query - Fatal编程技术网

Mongodb 使用Mongo更新映射值文档值

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

我有一个像myPortCollection这样的文档

{
    "_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的工作原理。它不是一个讨论论坛或邮件列表,而是一个问题和答案的存储库。我知道,不断询问为你所有问题提供答案的人是很有诱惑力的,但这不是它的工作原理。如果你有更多问题,那么就添加它们。看看你的声誉已经提高了既然你接受了答案。多问,多接受,解锁,最重要的是删除广告。