我正在尝试搜索与json对象匹配的数据库行。
示例:
var searchParams = {
city: ['New York City', 'Budapest'],
jobs: ['Assistent'] //Can be multiple
}
//If "city" is equal to one of the searchParams.city variables
//AND jobs is equal to one of the searchParams.jobs variables
var searchQuery = {
$and: [
{$or: clean_city},
{$or: clean_cat}
]
}
Jobs.find(searchQuery, function(err, list){
console.log(list);
});
我已经尝试了所有我可以在Google上找到的选项,但是似乎无法对数组进行任何操作。
如果有人能帮助我,我将非常感谢。
致谢
答案 0 :(得分:1)
您可以找到一个示例here,该示例根据您的情况假设:
searchParams
,因为我不知道clean_*
变量中的含义city
和job
{
$and: [
{ $or: searchParams.city.map(city => ({ city })) },
{ $or: searchParams.jobs.map(job => ({ job })) }
]
}
以下哪种语法更短(如果数据库字段名称不同,则不能将其快捷方式使用):
{
$and: [
{ $or: searchParams.city.map((city) => { return { city: city }; }) },
{ $or: searchParams.city.map((job) => { return { job: job }; }) }
]
}
答案 1 :(得分:0)
假设您在mongo db中的对象看起来像这样:
{
"city": "New York City",
"job": "Assistent"
}
您可以执行以下查询:
Jobs.find({
$and: [
{
city: { $in: ["NYC", "Paris"] }
}, {
job: { $in: ["Assistent"] }
}
]
})
这将返回在city数组中具有城市并在jobs数组中具有工作的任何对象。