我的数据库记录了这样的事情......
{
"_id": ObjectId("50118b145e69ef2c0e007a2"),
"class": "customer",
"dbid": "1829",
"value": "aaa@hotmail.com"
}
{
"_id": ObjectId("50118b145e69ef2c0e007a1"),
"class": "customer",
"dbid": "1828",
"value": "bbb@hotmail.com"
}
我的 PHP 代码
define('DB_HOST', 'localhost');
define('DB_DBNAME', 'mydb');
define('DB_USERNAME', 'mongouser');
define('DB_PASSWORD', 'mongopasswd');
define('DB_DSN', "mongodb://". DB_USERNAME .":". DB_PASSWORD ."@". DB_HOST ."/". DB_DBNAME);
$DB = new Mongo(DB_DSN);
if (!$DB) { die('DB Connection failed!'); }
$MONGODB = $DB->DB_DBNAME;
$COLLECTION = $MONGODB->my_customer;
我尝试使用下面的代码从所有记录(如删除字段)中使用 $unset "dbid",但它不起作用。
PS:我尝试在 stackoverflow 中搜索,但总是在命令行中显示教程,但我需要它在 PHP 脚本中工作。
$COLLECTION->update(array('$unset' => array('dbid' => true)));
我试过这段代码也没有用。 :(
$COLLECTION->update(array('$unset' => array('dbid' => true)), array('multiple'=>true));
如果你们有任何想法,请分享..
非常感谢。 :)
------------ 更新------------
我已经找到了问题的解决方案。
@马克 你是对的!我忘记了条件 而且我发现我的代码也是错误的。
问题是 mongodb 扩展与定义值混淆了。 (它认为 DB_DBNAME 是数据库名称)所以,我添加+更改了一些代码,如下所示。
$mongodb_name = DB_DBNAME;
$MONGODB = $DB->$mongodb_name;
$COLLECTION = $MONGODB->my_customer;
现在,我尝试@Marc 示例代码
要从所有记录中删除 ($unset) 字符串...(有效!)
$COLLECTION->update(array('dbid' => array('$exists' => true)), array('$unset' => array('dbid' => true)), array('multiple' => true));
要将字符串插入所有记录...我使用此代码。 (有效!)
$COLLECTION->update(array('dbid' => array('$exists' => false)), array('$set' => array('dbid' => 'new_value')), array('multiple' => true));
最佳答案
你忘记了条件,所以解决方案是:
$COLLECTION->update(
array('dbid' => array('$exists' => true)),
array('$unset' => array('dbid' => true)),
array('multiple' => true)
)
关于php - 如何使用 php 取消设置 mongodb 中的所有记录字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11757959/