2012-11-13 4 views
0

J'ai une collection, et une partie de ma collection est ici,requête mongodb ne fonctionne pas

permet d'appeler ce premier tableau

$ho = array('a' => 
array (
'0' => '508bef9e6803fa6305000000', 
'1' => '50901eac6803fafb0d000000', 
'2' => '508bf3766803fa810f000000', 
'3' => '50a2aeac6803fa150b000000', 
'4' => '50a2ae846803fa140b000000', 
'5' => '50a2ae616803fab706000000', 
'6' => '50a2ae3a6803fab506000000', 
'7' => '50a2adfc6803fab306000000', 
)), 

et il y a un autre tableau embed qui est d'un autre utilisateur, Appelons ce second tableau

'_id' => new MongoId("508bef9e6803fa6305000000"), 
'a' => 
array (
'0' => '508bf3766803fa810f000000', 
'1' => '50a2ae616803fab706000000', 
'2' => '50a2aeac6803fa150b000000', 
), 

ce que je veux faire est de deuxième réseau de soustrayez premier réseau, mais je veux le faire avec MongoDB

'a' => 
array (
'0' => '508bef9e6803fa6305000000', 
'1' => '50901eac6803fafb0d000000', 
'4' => '50a2ae846803fa140b000000', 
'6' => '50a2ae3a6803fab506000000', 
'7' => '50a2adfc6803fab306000000', 
), 

J'ai essayé différentes requêtes, mais n'a pas pu obtenir le résultat comme celui-ci, je vous remercie pour toute aide :)

$lk = $m->kud->user->findOne(
array(
"_id" => new MongoId("508bef9e6803fa6305000000"),'$nin'=>array("a"=>$ho["a"]) 
), 
array("_id" => 0, "a" => 1) 
); 

Répondre

0

MongoDB ne supporte pas les projections basées sur la correspondance de valeur (il sera éventuellement). Pour un cas comme celui-ci, vous devrez peut-être retourner le document entier, puis extraire les valeurs côté client.

+0

Je fais une application comme twitter pour me développer, ce que je veux faire ici, quand un utilisateur regarde les followers d'un autre utilisateur, j'ai l'intention de montrer si l'utilisateur suit cet utilisateur ou pas, je ne veux pas envoyer requête dans foreach loop, avez-vous une autre idée? comment puis-je gérer cela? – user1794257

+0

Dans quelle partie de la requête vous inquiétez-vous de placer une boucle forEach? Je ne suis pas sûr si cela aidera, mais vous pouvez regarder l'opérateur [$ in] (http://docs.mongodb.org/manual/reference/operator/in/) pour les requêtes. – shelman

+0

oui, je sais $ en remerciement :) – user1794257