gpt4 book ai didi

node.js - 如何使用 Mongoose 和 NodeJS 将变量传递给聚合(匹配)?

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:39 25 4
gpt4 key购买 nike

我有这样的文档:

{
"_id" : 1,
"time": {
"start": ISODate("2016-01-18T00:12:41.000Z"),
"end": ISODate("2016-01-18T05:12:41.000Z")
},
"subject":"javascript",
"class": "ABC"
}
...

我有客户端/服务器应用程序,客户端将使用四个变量向服务器发送请求:timeStimeEsubclass。它们可能是空字符串。

在我的服务器中,如何编写聚合查询来查找与过滤条件匹配的记录?我想忽略空搜索词。

var query = db.collection.aggregate([
{"$match": {"$and":[]}}
]);

示例:

如果timeS不为空,我希望$match$eq

如果 timeStimeE 都不为空,我希望 $match$gte:timeS, $lte:timeE

最佳答案

根据输入变量的存在动态创建匹配条件。


var matchCriteria = {}, pipeline;

var timeS, timeE, sub, clazz; //initialize them from your input

if (timeS) {
matchCriteria['time.start'] = timeS;
}
if (timeE) {
matchCriteria['time.end'] = timeE;
}
if (sub) {
matchCriteria.subject = sub;
}

if (clazz) {
matchCriteria.class = clazz;
}

pipeline = [
{
$match: matchCriteria
}
];

db.collection.aggregate(pipeline);

您可能需要执行其他检查,例如至少存在一个变量,以确保匹配条件不为空。

关于node.js - 如何使用 Mongoose 和 NodeJS 将变量传递给聚合(匹配)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34867907/

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