更新 mongodb 文档时删除的字段
Posted
技术标签:
【中文标题】更新 mongodb 文档时删除的字段【英文标题】:Fields getting removed when updatating mongodb document 【发布时间】:2015-07-30 19:28:50 【问题描述】:我是 mongoDB 的新手,在使用 Save()
时偶然发现了一些更新问题。
当我单击 html 页面中的保存按钮时,我运行以下代码:
<?php
$action = (!empty($_POST['btn_submit']) &&
($_POST['btn_submit'] === 'Save')) ? 'save_article' : 'show_form';
$id = $_REQUEST['id'];
try
$mongodb = new Mongo();
$articleCollection = $mongodb->myblogsite->articles;
catch (MongoConnectionException $e)
die('Failed to connect to MongoDB ' . $e->getMessage());
switch ($action)
case 'save_article':
$article = array();
if (!empty($id))
$article['_id'] = new MongoId($id);
else
$article['_id'] = new MongoId();
$article['title'] = $_POST['title'];
$article['content'] = $_POST['content'];
$article['tags'] = $_POST['tags'];
if (!empty($id))
$article['updated_at'] = new MongoDate();
else
$article['saved_at'] = new MongoDate();
$articleCollection->save($article);
break;
case 'show_form':
default:
if (!empty($id))
$article = $articleCollection->findOne(array('_id' => new MongoId($id)));
?>
这个想法是,如果$id
不为空,我更新文档,否则我插入。
我使用save()
来管理它。
我想要两个日期字段。一个保存文档的制作日期和一个新的保存文档上次更新时间的日期。
“save_at”
无法更新。每次进行更新时,“updated_at”
都会更改。
我现在的问题是,当我尝试添加 “updated_at”
时,“save_at”
会被删除。
我还更新了“saved_at”
-字段。
我的问题是:
如何在不删除 “saved_at”
字段的情况下插入新字段 ('updated_at')
?
如何在不更新其值的情况下保持 “saved_at”
-field 中的日期不变?
【问题讨论】:
【参考方案1】:使用可以通过更新命令来完成
$collection->update(array('id' => id),array('$set' => array('updated_at' =>$article['updated_at'])));
【讨论】:
以上是关于更新 mongodb 文档时删除的字段的主要内容,如果未能解决你的问题,请参考以下文章
mongodb更新查询删除命令中指定的字段以外的所有数组字段
在mongodb中保存或更新文档时如何防止更新“updatedAt”字段?
《MongoDB入门教程》第18篇 文档更新之$unset操作符