Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Javascript 更新数组中的嵌入文档-Mongodb+;节点驱动程序_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 更新数组中的嵌入文档-Mongodb+;节点驱动程序

Javascript 更新数组中的嵌入文档-Mongodb+;节点驱动程序,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我希望能够: 查找具有特定id的文档,然后根据shortID在传统数组中查找该文档,并更新与shortID匹配的嵌入文档的集合数组 很明显,有些东西还没有给我带来好处 我的结构如下: { "id" : "5706e5b5cbc61e5bf3a9f4e7", "legacy" : [ { "shortID" : "B1zHAllg", "timeStamp" : "Apr 16th 2016",

我希望能够: 查找具有特定id的文档,然后根据shortID在传统数组中查找该文档,并更新与shortID匹配的嵌入文档的集合数组

很明显,有些东西还没有给我带来好处

我的结构如下:

  {
    "id" : "5706e5b5cbc61e5bf3a9f4e7",
    "legacy" : [
        {
            "shortID" : "B1zHAllg",
            "timeStamp" : "Apr 16th 2016",
            "sets" : [
                {
                    "weight" : "7",
                    "reps" : "7"
                },
                {
                    "weight" : "7",
                    "reps" : "7"
                }
            ]
        },
        {
            "shortID" : "HyUVCegx",
            "timeStamp" : "Apr 16th 2016",
            "sets" : [
                {
                    "weight" : "6",
                    "reps" : "6"
                },
                {
                    "weight" : "6",
                    "reps" : "6"
                }
            ]
        }
    ]
 }
我尝试了许多选择,但觉得我最接近于尝试以下选项:

db.bench.findAndModify({query:{id:"5706e5b5cbc61e5bf3a9f4e7"},sort:{legacy:{$elemMatch:{shortID:"HyUVCegx"}}},update:{$set:{sets:[9]}}})

db.bench.update({id : "5706e5b5cbc61e5bf3a9f4e7", legacy:{$elemMatch:{shortID:"HyUVCegx"}}}, {$set : { sets: [{"weight":"5", "reps" :"10"}] }})

您将希望对此类操作使用位置更新。有关详细信息,请参阅文档

示例:在MongoDB shell中,您将执行以下操作:

db.collection.updateOne(
{"legacy.shortID":"HyUVCegx"}, 
{$set:
  {"legacy.$.sets":
    [{"weight":"15", "reps" :"10"}]
  }
})

上面的查询将修改
legacy
匹配条件中的文档内容,其中
shortID=“HyUVCegx”

完美!非常感谢萨利姆!