【发布时间】:2015-11-25 00:42:51
【问题描述】:
我目前正在尝试接受用户输入,以便用户能够搜索数据库。
> db.test2.find().pretty()
{
"_id" : ObjectId("55de8a17f8389e208a1e7d7e"),
"name" : "john",
"favorites" : {
"vegetable" : "spinach",
"fruit" : "apple",
}
}
{
"_id" : ObjectId("55de8a17f8389e208a1f6gg4"),
"name" : "becky",
"favorites" : {
"vegetable" : "spinach",
"fruit" : "apple",
}
}
{
"_id" : ObjectId("55e3b6cbec2740181355b809"),
"name" : "liz",
"favorites" : {
"vegetable" : "spinach",
"fruit" : "banana",
}
}
在此示例中,用户将能够搜索一个人最喜欢的蔬菜、水果或他们最喜欢的蔬菜和最喜欢的水果的任意组合。如果用户输入菠菜作为最喜欢的蔬菜,这三个都将返回。但是,如果用户输入最喜欢的蔬菜 = 菠菜,最喜欢的水果 = 苹果,则只会返回 john 和 becky。
在 MongoDB 中,您可以确定要搜索的参数。我正在尝试以某种方式编写我的代码,如果用户将字段留空,则不应搜索它。
我试过了
$query = array("favorites.vegetable" => "$userInput", "favorites.fruit" => "$userInput2");
但如果其中任何一个字段留空,则不会返回任何结果。我考虑过尝试使用 if 语句:
if ($vegetable == NULL)
{
$query = array("favorites.fruit" => "$fruit");
}
else if($fruit == NULL)
{
$query = array("favorites.vegetable" => "$vegetable");
}
else
{
$query = array("favorites.vegetable" => "$vegetable", "favorites.fruit" => "$fruit");
}
但是,如果我想让我的数据库可以通过更多参数进行搜索,我将有太多的条件语句。有什么方法可以让我的 Mongo 搜索在字段留空时识别?
【问题讨论】:
标签: php mongodb mongodb-query