私のDBはこのようなものを記録しています...
{
"_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;
以下のコードを使用して、delete フィールドなどのすべてのレコードから $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));