【问题标题】:Wildcard search in mongoDB using mongoose使用 mongoose 在 mongoDB 中进行通配符搜索
【发布时间】:2021-10-21 23:46:21
【问题描述】:

我正在从前端获取一些值。查询它们并返回结果。目前我有,

async fetchStats(getStatQuery: GetStatQueryDto): Promise<any> {
        const stats = await this.statModel.find({
            title: getStatQuery.title,
            weight: getStatQuery.weight
        });
        return stats;
}

getStatQuery.title 可以是undefined,如果没有任何内容,也可以发送getStateQuery.weight。现在,如果未定义,我希望 find 忽略该字段并将该字段过滤为通配符。除了人工检查还有什么办法吗?

【问题讨论】:

    标签: mongodb mongoose nestjs


    【解决方案1】:
    async fetchStats(getStatQuery: GetStatQueryDto): Promise<any> {
        const tmp = {
            title: getStatQuery.title,
            weight: getStatQuery.weight
        };
        let query = {};
        for(const [key, value] of Object.entries(tmp))
            if (value !== undefined)
                query[key] = value
                
        const stats = await this.statModel.find(query);
        return stats;
    }
    

    如果您有更多的查询字段,您唯一需要做的就是在tmp 变量中添加键值对。 for 循环将忽略具有未定义值的字段。

    【讨论】:

    • 我就是这样做的,但如果有的话,我想要一种更清洁、更专业的方法。但是谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2016-10-31
    相关资源
    最近更新 更多