2012-01-21 3 views
2

Il y a une collection « emailDeliveryActive »:

{ 
"_id": ObjectId("4f1950f0e902edfc3e000001"), 
"coupons": { 
    "4f1950b7e902edf23e000001": { 
    "_id": ObjectId("4f1950b7e902edf23e000001"), 
    "couponID": ObjectId("4f15c7d8e902edb667000000") 
    }, 
    "4f1950bfe902ed843f000000": { 
    "_id": ObjectId("4f1950bfe902ed843f000000"), 
    "couponID": ObjectId("4f171f33e902ed4f4f000002") 
    } 
}, 
"recipients": [ 
    { 
    "email": "[email protected]", 
    "get": "?auth=ZG1pdHJ5LnZvbG9zbmloaW5AZ21haWwuY29tfDA5OGY2YmNkNDYyMWQzNzNjYWRlNGU4MzI2MjdiNGY2" 
    }, 
    { 
    "email": "[email protected]", 
    "get": "?auth=ZGpyb3VibGVAZ21haWwuY29tfDA5OGY2YmNkNDYyMWQzNzNjYWRlNGU4MzI2MjdiNGY2" 
    }, 
    { 
    "email": "[email protected]", 
    "get": "?auth=a2FsaWJyb3YxQGdtYWlsLmNvbXwwOThmNmJjZDQ2MjFkMzczY2FkZTRlODMyNjI3YjRmNg==" 
    } 
], 
"title": "test" 
} 

doit être d'un tableau de « bénéficiaires » pour supprimer un élément d'un e-mail indiquée. Cela :

$result = $mongoDB->emailDeliveryActive->update(
array('_id' => $emailDelivery['_id']), 
array(
'$pull'=>array(
'recipients.$.email' => '[email protected]' 
) 
) 
); 

$ résultat à obtenir TRUE, mais la collection ne change pas. Je fais quelque chose de mal?

Répondre

3

Vous n'avez pas besoin de l'opérateur $ - il s'agit de la "position de l'élément de tableau correspondant dans la requête" - n'a pas de sens à utiliser ici. Essayez aussi:

$result = $mongoDB->emailDeliveryActive->update(
    array('_id' => $emailDelivery['_id']), 
    array(
      '$pull'=> array('recipients' => array('email' => '[email protected]')) 
     ) 
); 
+0

Merci beaucoup! – jeka5555