MongoDB请求的条件不显示


MongoDB request with the condition do not display

"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)));

在这个查询中,我得到了我所有的书,唯一的例外是没有带来奇幻和历史类型的书。如何对被排除的类型作品提出要求?

你的数组有一个基本问题:

$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)
));