在Mongodb返回数据之前有条件地添加过滤器困境



因为我不能正确地表达我想要实现的目标,因为许多主题可能错误地属于有条件过滤mongodb查询的术语。这是我想要实现的,

我有一个用户数据库,我正试图发送一个搜索查询到我的后端与以下数据{"country":"all","category":"all","gender":"all","ageRange":[25, 40]}

我正试图以编程方式将这些参数添加到我的查询中。例如,

const search = db.collection("users").find();
if (params.country == "ALL") {
search.addFilter( { country: "..." } )
}
if (params.age < 18) {
search.addFilter( { minor : true } )
}
const data = search.limit(30).toArray();

这样的事情可能吗?当国家等于"所有"时;我不想应用任何过滤器,但是如果country等于某个国家,我想应用那个国家作为过滤器,等等。我可以通过编程增加过滤器的困境吗?

使用Nodejs (Nextjs api),所以javascript和mongodb库

var filters = {}
var andObj = []
if (params.country == "ALL") {
andObj.push( { country: {$regex:".*." }} )
}
if (params.age < 18) {
andObj.push( { minor : true } )
}
filters['$and'] = andObj
const data = await db.collection("users").find(filters).limit(30).toArray();

var filters = {}
var andObj = []
if (params.country != "ALL") {
andObj.push( { country: params.country} )
}
if (params.age < 18) {
andObj.push( { minor : true } )
}
filters['$and'] = andObj
const data = await db.collection("users").find(filters).limit(30).toArray();

最新更新