0
"bookName": "I've been discovered",
    "bookGenre": {
         "0": "Classics",
         "1": "Fantasy",
         "2": "Romance"
    }

"bookName": "Doctor Who",
"bookGenre": {
     "0": "Classics",
     "1": "Biography"
}

"bookName": "I don't want to tread carefully",
"bookGenre": {
     "0": "Classics",
     "1": "Fantasy",
     "2": "History"
}

クラシックというジャンルのすべての本を入手したいのですが、ファンタジーと歴史というジャンルは除きます。

$genre = array("Classics");
$genreNot = array("Fantasy", "History");

$q = find(array("bookGenre" => array('$in' => $genre), "bookGenre" => array('$nin' => $genreNot)));

このクエリでは、すべての本を入手しますが、例外は「ファンタジー」というジャンルを持っていないことであり、「歴史」は機能しません。除外されたジャンルの作品をリクエストするにはどうすればよいですか?

4

1 に答える 1

0

うーん、ここでアレイに根本的な問題があります。

$q = find(array("bookGenre" => array('$in' => $genre), 
"bookGenre" => array('$nin' => $genreNot)));

同じオブジェクトに対して重複するキーがあるため、実際には、このクエリで通過する句は"bookGenre" => array('$nin' => $genreNot)$in代わりに、とを組み合わせることができると思います$nin

$q = find(array(
             "bookGenre" => array('$in' => $genre, '$nin' => $genreNot)
));

そのようです。

于 2013-01-09T14:07:19.903 に答える