Моя БД записывает что-то вроде этого …
{ "_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));
Если у вас есть идеи, пожалуйста, поделитесь.
Огромное спасибо. 🙂
——— Обновлено ———-
Привет, ребята и спасибо за ваши ответы.
Я уже нашел проблемы.
@Marc Вы правы! Я забыл критерии, и я обнаружил, что мой код тоже неправильный.
Проблема заключается в том, что расширение mongodb путается с значением define. (Он думает, что DB_DBNAME – это имя базы данных), поэтому я добавил + изменил код, похожий на этот.
$mongodb_name = DB_DBNAME; $MONGODB = $DB->$mongodb_name; $COLLECTION = $MONGODB->my_customer;
Теперь, я попробую код примера @Marc
Чтобы удалить ($ unset) строку из всех записей … (Works!)
$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) )
Я думаю, что что-то вроде этого будет работать
$collection->update( array( '$unset' => array('dbid' => true) ); array("upsert" => true, "multiple" => true) );