mongo php 库 updateOne 和 insertOne 破坏性集合

罗伯特帕克

我有一个应用程序,我正在尝试从旧驱动程序更新到新驱动程序。当以下代码被触发时,我遇到了集合被损坏的问题。我想我已经在这里缩小了范围。

    function update($collection,$criteria,$data,$insertIfNotExists = false)
{
    if(!empty($collection) && !empty($criteria) && !empty($data)) {
        if (!isset($this->collection[$collection])) {
            $this->collection[$collection] = (new MongoDB\Client)->hebe->{$collection};
        }
        if ($insertIfNotExists) {
            $oldData = $this->collection[$collection]->findOne($criteria);
            if ($oldData == NULL) {
                $data['createdDate'] = date("Y-m-d H:i:s");
                $data['modifiedDate'] = (isset($data['modifiedDate'])) ? $data['modifiedDate']:date("Y-m-d H:i:s");
                /*
                return ($this->collection[$collection]->insertOne($data)) ? array('status'=>'ok'):array('status'=>'error','error'=>'unknown_error');
                */
            } else {
                $newData = $oldData;
                foreach($data as $n=>$v) {
                    $newData[$n] = $v;
                }
                $newData['modifiedDate'] = (isset($newData['modifiedDate'])) ? $newData['modifiedDate']:date("Y-m-d H:i:s");

                /*
                return ($this->collection[$collection]->updateOne($criteria,['$set' => $newData])) ? array('status'=>'ok'):array('status'=>'error','error'=>'unknown_error');
                */
            }
        } else {
            /*
            return ($this->collection[$collection]->updateOne($criteria,['$set' => $data])) ? array('status'=>'ok'):array('status'=>'error','error'=>'unknown_error');
            */
        }
    }

}

示例变量是

$collection = 'customer'

$criteria = array ( 'number' => '9999',)

$data = array (
  'number' => '9999',
  'name' => 'Testing Account',
  'reference' => 'Peter Smith',
  'defaultDeliveryAddress' => 1,
  'visitAddress' => '',
  'address' => '',
  'district' => 'Marknad',
  'postAddress' => '',
  'orgNumber' => '5562041771',
  'phone' => '031-7802700',
  'fax' => '031-193328',
  'groupCode' => 'int',
  'creditCustomer' => '',
  'typeOfDelivery' => 'Bil',
  'typeOfPayment' => '10',
  'emailAddresses' => 
  array (
    'invoice' => '[email protected]',
    'order' => '[email protected]',
    'deliveryNote' => '[email protected]',
    'packingSlip' => '[email protected]',
  ),
  'orderType' => NULL,
  'termsOfDelivery' => 'RC',
  'creditLimit' => 100000.0,
  'pricelist' => 4,
  'pricelist1' => '',
  'pricelist2' => '9998',
  'pricelist3' => '104',
  'discount' => NULL,
  'countryCode' => 'SE',
  'currencyCode' => 'SEK',
  'blocked' => 0,
  'deliveryCost' => 0,
  'vatCode' => '2',
  'email' => '[email protected]',
  'password' => 'password',
  'modifiedDate' => '2019-06-25 00:00:00',
  'deliveryAddresses' => 
  array (
    0 => 
    array (
      'row' => 1,
      'name' => 'Test Address',
      'address' => 'Box 12345',
      'postAddress' => '42246',
      'default' => true,
    ),
    1 => 
    array (
      'number' => '9999',
      'name' => 'Testing Address',
      'reference' => '13232',
      'address' => 'Box 12245',
      'postAddress' => '42246',
    ),
  ),
  'references' => 
  array (
    0 => 
    array (
      'number' => '9999',
      'name' => 'Testing',
      'email' => '',
      'password' => '',
    ),
    1 => 
    array (
      'number' => '9999',
      'name' => 'Testing2',
      'email' => '',
      'password' => 'password',
    ),
    2 => 
    array (
      'number' => '9999',
      'name' => 'Peter Smith',
      'email' => '',
      'password' => 'password',
    ),
  ),
)

有人可以指出我在做错什么的正确方向updateOneinsertOne从我对文档的理解来看,它支持数组。

编辑:有点背景是我将这个系统和 MongoDB 从 2.6 升级到 3.6。我还从旧版 mongo 升级了 mongodb 驱动程序。

罗伯特帕克

问题是集合中的旧数据有引用,而 updateOne/insertOne 数据没有。纠正这一点似乎可以解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何insertOne到mongo数据库

来自分类Dev

insert 和 insertOne 不是函数,更新不是创建 mongo ID

来自分类Dev

findOne 和 updateOne 的 Mongo DB 并发问题

来自分类Dev

java中的破坏性和非破坏性方法是什么?

来自分类Dev

在 Ubuntu 16.04 上重启和关闭“破坏性”

来自分类Dev

MongoDB VS MySQL-为什么mongo / mongoose自动创建数据库和集合?

来自分类Dev

如何从mongo数据库的集合中获取具有特定键和值的critarea结果?

来自分类Dev

Yesod Mongo数据库和JSON

来自分类Dev

PHP&Mongo:无法加载动态库

来自分类Dev

PHP Mongo库未更新某些文档

来自分类Dev

Mongo存储库Findby与集合-Groovy

来自分类Dev

如何提高数据库的关系性-SQL和PHP

来自分类Dev

PHP SOAP和Python SOAP库之间的兼容性

来自分类Dev

PHP启动无法加载动态库php_mongo.dll

来自分类Dev

多个Mongo数据库和spring-data

来自分类Dev

PHP无法加载动态库(mongo.so)

来自分类Dev

如何在PHP中动态选择Mongo数据库

来自分类Dev

从mongo数据库集合中获取集合的特定列表

来自分类Dev

Mongo汇总集合和项目字段

来自分类Dev

流星0.9.0破坏了我的Mongo数据库?

来自分类Dev

insert(),insertOne()和insertMany()方法有什么区别?

来自分类Dev

使用PHP从mongo集合中删除文档

来自分类Dev

Mongo收集和流星反应性

来自分类Dev

同一集合的插入和更新之间的Mongo原子性

来自分类Dev

使用Alteryx的Mongo连接工具连接Mongo Labs数据库(集合)

来自分类Dev

使用Alteryx的Mongo连接工具连接Mongo Labs数据库(集合)

来自分类Dev

可以在Windows和Linux之间拆分分片的Mongo数据库(mongos和mongod)吗?

来自分类Dev

如何使用php和mongo切片查找结果?

来自分类Dev

在concat字段中搜索MongoDB(Mongoose和Mongo Client PHP)

Related 相关文章

  1. 1

    如何insertOne到mongo数据库

  2. 2

    insert 和 insertOne 不是函数,更新不是创建 mongo ID

  3. 3

    findOne 和 updateOne 的 Mongo DB 并发问题

  4. 4

    java中的破坏性和非破坏性方法是什么?

  5. 5

    在 Ubuntu 16.04 上重启和关闭“破坏性”

  6. 6

    MongoDB VS MySQL-为什么mongo / mongoose自动创建数据库和集合?

  7. 7

    如何从mongo数据库的集合中获取具有特定键和值的critarea结果?

  8. 8

    Yesod Mongo数据库和JSON

  9. 9

    PHP&Mongo:无法加载动态库

  10. 10

    PHP Mongo库未更新某些文档

  11. 11

    Mongo存储库Findby与集合-Groovy

  12. 12

    如何提高数据库的关系性-SQL和PHP

  13. 13

    PHP SOAP和Python SOAP库之间的兼容性

  14. 14

    PHP启动无法加载动态库php_mongo.dll

  15. 15

    多个Mongo数据库和spring-data

  16. 16

    PHP无法加载动态库(mongo.so)

  17. 17

    如何在PHP中动态选择Mongo数据库

  18. 18

    从mongo数据库集合中获取集合的特定列表

  19. 19

    Mongo汇总集合和项目字段

  20. 20

    流星0.9.0破坏了我的Mongo数据库?

  21. 21

    insert(),insertOne()和insertMany()方法有什么区别?

  22. 22

    使用PHP从mongo集合中删除文档

  23. 23

    Mongo收集和流星反应性

  24. 24

    同一集合的插入和更新之间的Mongo原子性

  25. 25

    使用Alteryx的Mongo连接工具连接Mongo Labs数据库(集合)

  26. 26

    使用Alteryx的Mongo连接工具连接Mongo Labs数据库(集合)

  27. 27

    可以在Windows和Linux之间拆分分片的Mongo数据库(mongos和mongod)吗?

  28. 28

    如何使用php和mongo切片查找结果?

  29. 29

    在concat字段中搜索MongoDB(Mongoose和Mongo Client PHP)

热门标签

归档