gpt4 book ai didi

node.js - 使用 Mongodb 创建渐进式过滤器($or + $and)

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:43 24 4
gpt4 key购买 nike

我对 Mongodb 还很陌生。我正在尝试创建一个过滤器,其所有参数都是可选的,但当用户传递它们时,mongodb 中的结果将变得更加准确

我认为这会起作用,但不幸的是它不起作用:

const { name, lastName, country, jobRole } = req.query;
const user = await User.find({ $and: [
{ $or: [{ name }] },
{ $or: [{ lastName }] },
{ $or: [{ country }] },
{ $or: [{ jobRole }]}
], state: 'APPROVED' });

我非常希望知道如何实现渐进式过滤器的行为。

最佳答案

用 JS 构建查询比使用复杂的 MongoDB 查询更容易,因为 MongoDB 查询不必要地解释输入参数:

let req = { query: { name: 1, country: 3 } };
const filters = ['name', 'lastName', 'country', 'jobRole'];
let progressive = [];

for (let filter of filters){
let value = req.query[filter];
if (value) {
progressive.push({ [filter]: value })
}
}

console.log(progressive);

const user = await User.find({ $and: [ { $or: progressive },  { state: 'APPROVED' } ] });

关于node.js - 使用 Mongodb 创建渐进式过滤器($or + $and),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60124635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com