J'ai un document de compte qui ressemble à ceci:MongoDB (ceci ou cela ou l'autre), mais pas (moi)
_id: ###
email: string
password: md5(string)
altemail: [{ email: string
verified: time},
{ email: string
verified: time},
{ ... }]
Et je voudrais vérifier e-mail unique avant de permettre à un utilisateur de créer un Compte. Cependant, je voudrais aussi permettre des sauvegardes pour l'utilisateur actuel _id.
Mon instinct est d'utiliser:
$db->users->find(array(
'$or' => array(array("email" => $email),
array("altemail.email" => $email))
'_id' => array('$nin' => array($myID))
));
Mais cela ne fonctionne pas pour moi. Quelqu'un pourrait-il me montrer comment mettre en place une requête à peu près équivalent à MySQL de:
SELECT *, count(_id) FROM users WHERE (email = $email OR altemail.email = $email) AND (_id != $myID);
Merci les gars.
Votre $ nin est faux pour un, il devrait être 'field => array ($ nin)' – Sammaye
Merci, je l'ai légèrement modifié, mais en espérant que quelqu'un puisse peser pour montrer comment cette requête est destinée à être écrite. –
essentiellement: $ et ($ ou (email & altemail.email), $ ne (_id))? – WiredPrairie