【问题标题】:Updating and pushing an array to mongo collection更新数组并将其推送到 mongo 集合
【发布时间】:2022-01-28 14:55:30
【问题描述】:

大家好,我正在尝试创建一个查询,以便通过在 MongoDB 中添加另一个产品来更新用户的查询。

orders的结构是:

{
  "username": "mike",
  "products": [
    {
      "_id": {
        "$oid": "61f14c42855800006f003062"
      },
      "number": "3",
      "name": "Honduras",
      "price": 7,
      "stock": 10
    }
  ],
  "status": "UNPAID"
}

我在 PHP 代码中的查询如下:

$collection -> updateOne(
  "username"=>"$username",'$push'=>["products" => "$json"]
);

但我每次都会遇到同样的错误:

Parse error: syntax error, unexpected token "=>", expecting ")" 

有什么建议吗?

【问题讨论】:

  • '$push'更改为$push
  • @executable 还是一样的错误。
  • 您需要将语句包装在一个数组中:updaeOne([ "username" => ..., '$push' => ...])。现在,您正在尝试在数组之外使用 PHP 数组语法 =>(语法错误)
  • @M.Eriksson 嘿。我将查询更改为: updateOne(["username"=>"$username",'$push'=>["products" => "$json"]]); 和错误我得到的是:致命错误:未捕获的 ArgumentCountError:函数 MongoDB\Collection::updateOne() 的参数太少,在第 28 行的 C:\xampp\htdocs\eCoffeeGrinder\assets\php\add_to_cart.php 中传递了 1 和预计至少 2 个
  • 看看你在下面得到的答案。我更关注语法错误而不是 Mongos 方法。 :-)

标签: php database mongodb


【解决方案1】:

我使用第三方服务/库来执行此操作 - MongoDBDriverManager PHP 库

<?php

    $query = new MongoDBDriverBulkWrite;
    $query->update(
       ['username' => $username],
       ['$set' => ['products' => $json]],
    );

    $db_manager = new MongoDBDriverManager('mongodb://localhost:27017');
    $dbresult= $manager->executeBulkWrite('dbname.orders', $query);

?>

你可以更了解我从这里获取我的资源..

https://docs.mongodb.com/drivers/php/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 2021-10-17
    • 1970-01-01
    • 2016-03-23
    • 2017-07-10
    • 1970-01-01
    • 2017-08-03
    • 2020-03-31
    相关资源
    最近更新 更多