我目前正在嘗試接受用戶輸入,以便用戶可以搜索數據庫。MongoDB搜索的用戶輸入
> 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",
}
}
在這個例子中,用戶將能夠搜索任何人喜歡的蔬菜,水果或他們最喜歡的蔬菜和喜愛的水果的組合。如果用戶輸入菠菜中最喜歡的蔬菜,所有三個將被退回。但是,如果用戶輸入最喜歡的蔬菜=菠菜和最喜歡的水果=蘋果,只有約翰和貝基將被退回。
在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搜索識別字段留空?
非常感謝您的詳細解答!它真的幫助我。我會考慮如何構建我的數據庫。再次感謝你! – MongoNoob