php - 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,看起来一切都正确。
是否可以保证我已经确定注册了数据库?或者如何捕捉碰撞或关于为什么未记录此数据的错误
解决方案
推荐阅读
- python - 如何解决“加载原生 TensorFlow 运行时失败”?
- msbuild - Visual Studio 扩展构建失败并出现错误 VSSDK1077:无法找到扩展目录。"值不能为空
- c - 从结构的动态数组中删除元素时的未定义行为
- r - RSelenium:阻止网站在 Chrome 中显示通知
- angular - Angular 5:不使用 ngFor 属性进行渲染
- javascript - 如何修复“未捕获的 ReferenceError:FB 未定义”?
- java - 如何从 Hibernate Search 中获取最低和最高价格
- reactjs - 键入 Netlify env vars 的正确语法是什么?
- python - Tabula Py 未检测 PDF 中的表格
- php - 错误:不允许我通过会话进入我的 php 仪表板