0
`我在MongoDB中商家信息的列表,讓每件物品包含以下字段:由城市,地址,狀態搜索,MLS數
{
"city" : "Yucca Valley",
"county" : "San Bernardino",
"fullStreetAddress" : "7496 CHULA VISTA Avenue",
"state" : "CA",
"zipCode" : "92284",
"streetName" : "7496",
"streetNumber" : "CHULA VISTA",
"mls" : "41462506"
}
我有一個搜索輸入,我想編寫一個語句,按這個列搜索並返回結果。查詢按空格分割searchQuery並按每個詞搜索。 對於Yucca
它會返回正確的結果,但它對於Yucca Valley
或Yucca Valley CA
不正確。
這裏是我的搜索查詢:
var searchQuery = req.param('q') ? req.param('q').trim() : null;
if (searchQuery) {
var searchQueryArray = searchQuery.split(" ");
var page = req.param('page') ? req.param('page') : 1;
var pageData = {};
var query = Property.find()
searchQueryArray.forEach(
function (queryItem){
var orNumeric = [];
var orStrings = [];
console.log(queryItem);
// check, if word contains only numbers, compare it to numeric fields
if(/^\d+$/.test(queryItem)){
orNumeric.push({streetNumber: {like: "%" + queryItem + "%"}});
orNumeric.push({zipCode: {like: "%" + queryItem + "%"}});
orNumeric.push({mls: {like: "%" + queryItem + "%"}});
query.where({or: orNumeric});
} else {
orStrings.push({streetName: {like: "%" + queryItem + "%"}});
orStrings.push({city: {like: "%" + queryItem + "%"}});
orStrings.push({state: {like: "%" + queryItem + "%"}});
query.where({or: orStrings})
}
}
);
query.where({or: [
{"fullStreetAddress": {like: "%" + searchQuery + "%"}}
]});
我想,這是因爲在過去where
覆蓋以前的。任何人都可以建議如何修改這個查詢,它會返回正確的結果。