mongodb设置嵌套对象值

时间:2017-07-01 07:59:05

标签: mongodb nested

这是我的问题: 我需要使用以下命令设置嵌套值:

db.getCollection('user').
updateOne(
{ username: 'adh3', 'pf.acc.accnbr': 1234 } 
, {
        "$set": {
                "pf.acc.$.cyc.0": {
                        "cycid": 1498894685,
                        "name": "QPT262017_S3",
                        "startdate": "2017-06-27T09:50",
                        "enddate": "2017-09-25T09:50",
                        "age": 99,
                        "status": "TEST",
                        "active": true,
                        "det.1": 
                           {
                                "createDate": "2017-06-27T09:50",
                                "moment": "TEST",
                                "progress": 0,
                                "age": 0,
                                "dcycid": 1498557047
                           }

                }
        }
}) 

这是我的收藏架构:

user : {
     username: string,
     pf : {
           pfid: number
           acc : [ {
                accnbr: number,
                cyc : [ {
                   cycid: number,
                   name: string,
                   ...
                   det : [ {
                       dcycid: number,
                       ...
                   } ]
                } ]
           } ]
     }
}

我得到的错误如下:

the pf.acc.0.cyc.0.det.1 is not a valid for storage

知道如何解决我的查询?

1 个答案:

答案 0 :(得分:0)

我通过将查询分为两部分解决了这个问题:

  1. 关于cyc部分。

  2. 关于零件。