Php 条件为“不显示”的MongoDB请求
我想得到所有类型的经典书籍,但不包括类型幻想和历史Php 条件为“不显示”的MongoDB请求,php,mongodb,Php,Mongodb,我想得到所有类型的经典书籍,但不包括类型幻想和历史 "bookName": "I've been discovered", "bookGenre": { "0": "Classics", "1": "Fantasy", "2": "Romance" } "bookName": "Doctor Who", "bookGenre": { "0": "Classics", "1": "Biography" }
"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)));
对于同一个对象,您有重复的键,因此实际上此查询中唯一经过的子句是“bookgreen”=>数组('$nin'=>$genreNot)
。我相信您可以将$in
和$nin
组合起来:
$q = find(array("bookGenre" => array('$in' => $genre),
"bookGenre" => array('$nin' => $genreNot)));
就像这样。OMG,一个基本的检查请求。谢谢,我会小心的。
$q = find(array(
"bookGenre" => array('$in' => $genre, '$nin' => $genreNot)
));