Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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-使用python更新_Mongodb_Python 2.7 - Fatal编程技术网

MongoDB-使用python更新

MongoDB-使用python更新,mongodb,python-2.7,Mongodb,Python 2.7,我想尝试向数组添加更多值,但因此两个值必须匹配。我用一个值工作,但不是用两个值。这就是我所拥有的: { "_id" : ObjectId( "50f1a05d00bf6832b03a01cb" ), "app" : "494258956", "keywords" : [ { "data" : [ { "device" : "software", "date" : Date( 1358012509633 ), "r

我想尝试向数组添加更多值,但因此两个值必须匹配。我用一个值工作,但不是用两个值。这就是我所拥有的:

    { "_id" : ObjectId( "50f1a05d00bf6832b03a01cb" ),
  "app" : "494258956",
  "keywords" : [ 
    { "data" : [ 
        { "device" : "software",
          "date" : Date( 1358012509633 ),
          "rank" : 1,
          "shop" : "143443" } ],
      "keyword" : "test" } ] }
当我为关键字“test”和应用程序“494258956”添加了一个新的“data”时,应该向“data”添加一个新的集合,如下所示:

    { "_id" : ObjectId( "50f1a05d00bf6832b03a01cb" ),
  "app" : "494258956",
  "keywords" : [ 
    { "data" : [ 
        { "device" : "software",
          "date" : Date( 1358012509633 ),
          "rank" : 1,
          "shop" : "143443" }
 , { "device" : "software",
          "date" : Date( 1358012599633 ),
          "rank" : 2,
          "shop" : "143443" }],
      "keyword" : "test" } ] }

提前感谢。

这似乎满足了您的要求(JavaScript语法):


当前不支持此操作-因为位置运算符
$
当前不适用于upsert。请投赞成票

解决方法可能是重新访问模式设计或不使用upsert的多个操作,并检查更新的项目数。你必须注意不要达到比赛状态,例如:

  • {关键字:{$exists:true}}
  • 如果更新返回0-没有关键字执行upsert:where
    {keywords:{$exists:false}
  • 如果更新返回0-有一场比赛,添加关键字的人现在可以执行步骤1

  • 查看$push操作员,谢谢。如果关键字存在,则该方法有效,但如果关键字不存在且必须插入数据集,则该方法无效。我刚得到一美元。你知道一个解决方法吗?我很确定这对于“插入”操作来说太复杂了。我认为您需要测试更新的结果,并在找不到项目时进行插入。
        coll.update({
            "app": "494258956", 
            "keywords": {
                "$elemMatch": { "keyword": "test" }
            }
        },
        {
            "$push": {
                "keywords.$.data": {
                    "device" : "software",
                    "date" : new Date( 1358012599633 ),
                    "rank" : 2,
                    "shop" : "143443" 
                }
            }
        }