Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Arrays 在MongoDB中,如何使用特定键将新值推送到数组中?_Arrays_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Arrays 在MongoDB中,如何使用特定键将新值推送到数组中?

Arrays 在MongoDB中,如何使用特定键将新值推送到数组中?,arrays,mongodb,mongodb-query,aggregation-framework,Arrays,Mongodb,Mongodb Query,Aggregation Framework,我在MongoDB中的“价格”数组中存储了数百万个不同项目的价格变化数据,如下所示: { "item" : "I1", "Price" : [ {"k": "2020-07-01", "v": [{"t":t1, "v":1000}, {"t":t2, "v":1500}

我在MongoDB中的“价格”数组中存储了数百万个不同项目的价格变化数据,如下所示:

{ 
  "item" : "I1",
  "Price" : [
         {"k": "2020-07-01", "v": [{"t":t1, "v":1000}, {"t":t2, "v":1500}, {"t":t3, "v":1350}, ..]},
         {"k": "2020-07-02", "v": [{"t":t1, "v":1200}, {"t":t2, "v":1250}, {"t":t3, "v":1050}, ..]},         
         ...
     ]
 },
 { 
   "item" : "I2",
   "Price" : [
         {"k": "2020-07-01": [{"t":t1, "v":1025}, {"t":t2, "v":1200}, {"t":t3, "v":1400}, ..]},
         {"k": "2020-07-02": [{"t":t1, "v":1560}, {"t":t2, "v":1050}, {"t":t3, "v":1350}, ..]},
         ...
     ]
 }
我只是想知道有没有办法在price数组的元素中使用一个特定的键,例如“k”:“2020-07-01”,来推送一个新的时间价格,例如{“t”:t',“v”:2000}? 项目“I1”的结果应如下所示:

{ 
  "item" : "I1",
  "Price" : [
         {"k": "2020-07-01", "v": [{"t":t1, "v":1000}, {"t":t2, "v":1500}, {"t":t3, "v":1350}, .., {"t":t', "v":2000}]},
         {"k": "2020-07-02", "v": [{"t":t1, "v":1200}, {"t":t2, "v":1250}, {"t":t3, "v":1050}, ..]},         
         ...
     ]
 },

谢谢是的,您可以尝试
updateMany()
和位置运算符
$

db.collection.updateMany(
    { 
      "item": "I1",
      "Price.k": "2020-07-01" 
    },
    {
        $push: {
            "Price.$.v": {
                "t": "t4",
                "v": 2000
            }
        }
    }
)

谢谢@turivishal。我在执行代码时遇到了“批处理错误”错误!你知道问题出在哪里吗@你能提供更多的细节吗。您在何处以及如何显示此查询?我使用pymongo:UpdateOne({where_statement},{$push:{…},upsert=True)执行代码@turivishalI还使用bulk_write编写多个更新。问题在于价格。$.v!当我删除$时,它就工作了。然而,结果不是我所需要的@图里维沙尔