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