Как использовать pull в mongodb используя php - PullRequest
0 голосов
/ 29 марта 2012

Я хочу удалить информацию из документа, но код запускается и ошибки не возникает. Но она не удаляет запись. У меня есть такие данные

{       
  "id": "12345",
   "info": [
    {
        "sno":1
        "name": "XYZ",
        "email": "xyz@example.com"
    },
    {
        "sno":2
        "name": "XYZ",
        "email": "xyz@example.com"
    }
  ]      
}

и я хочу удалить данные, где id = 12345 и info.sno = 2 мой php код id

<?
     $m=new Mongo();
     $db=$m->database;
     $cond=array("id"=>'12345');
     $data=array('$pull'=>array("info.sno"=>2));
     //I used before this $data=array('$pull'=>array("info"=>array("sno"=>2)));
     echo json_encode($data);
     $db->info->update($cond,$data);
     $st=$db->Command(array("getlasterror"=>1));
?>

Я запускаю команду mongo db, как:

    db.info.update({"id":12345},{'$pull':{"info":{"sno":2}}});

1 Ответ

2 голосов
/ 29 марта 2012

Ваша закомментированная строка верна:

test> db.foo.findOne()
{
    "_id" : ObjectId("4f74737cc3a51043d26f4b90"),
    "id" : "12345",
    "info" : [
            {
                    "sno" : 1,
                    "name" : "XYZ",
                    "email" : "xyz@example.com"
            },
            {
                    "sno" : 2,
                    "name" : "XYZ",
                    "email" : "xyz@example.com"
            }
    ]
}
test> db.foo.update({"id":"12345"}, {"$pull":{info:{sno:2}}})
test> db.foo.findOne()
{
    "_id" : ObjectId("4f74737cc3a51043d26f4b90"),
    "id" : "12345",
    "info" : [
            {
                    "sno" : 1,
                    "name" : "XYZ",
                    "email" : "xyz@example.com"
            }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...