首页 > 解决方案 > mongodb updateOne 检查保证数据已设置

问题描述

我将 mongodb 4.4.6 与 php 一起使用:

        "name": "mongodb/mongodb",
        "version": "1.8.0",

updateOne我遇到了奇怪的问题,在使用一组数据执行时出于某种原因

    $fieldsLog = $fields;
    unset($fieldsLog['data']);
    $this->refreshTokenLogger->info('write session updateOne fields - ' . json_encode($fieldsLog));
    $updateResult = $this->getCollection()->updateOne(
        [$this->options['id_field'] => $sessionId],
        ['$set' => $fields],
        [
            'gcProbablity' => 1.0,
            'upsert' => true
        ]
    );

    $this->refreshTokenLogger->info(
        'session updateResult - '
        . 'MatchedCount - ' . $updateResult->getMatchedCount().
        ','.'ModifiedCount - ' . $updateResult->getModifiedCount() .
        ','.'UpsertedCount - ' . $updateResult->getUpsertedCount() .
        ','.'UpsertedId - ' . $updateResult->getUpsertedId()
    );

并在日志中检查进程

[2021-06-04T16:47:57.631265+00:00] refresh_token.INFO: write session updateOne fields - {"time":{"$date":{"$numberLong":"1622825277622"}},"expires_at":{"$date":{"$numberLong":"1622826717000"}},"user_name":"s@s.com","refresh_token":"5ac32c157c458b48ebd6aab64207472418df28283d1a7b33977e58576d52232af943f2d96cb06e3ea6d520172a541d6f7d92d2fffb3c6e95885e3ad8dd3d3539","user_ip":"172.19.0.4"} [] []
[2021-06-04T16:47:57.633641+00:00] refresh_token.INFO: session updateResult - MatchedCount - 1,ModifiedCount - 1,UpsertedCount - 0,UpsertedId -  [] []

但是在收集中,我遇到的是旧的,而不是应该记录的数据-应该是这个哈希-5ac32c157c458b48ebd6aab64207472418df28283d1a7b33977e58576d52232af943f2d96cb06e3ea6d520172a541d6f7d92d2fffb3c6e95885e3ad8dd3d3539

并且日志文件修复了这个问题,ModifiedCount 和 MatchedCount 有 1,看起来一切都正确。

是否可以保证我已经确定注册了数据库?或者如何捕捉碰撞或关于为什么未记录此数据的错误

标签: phpmongodb

解决方案


推荐阅读