我有一个NodeJS服务器在' / api / jobs /'上使用get方法运行express。调用时,我从url获取一些查询字符串参数,然后对MongoDB数据库进行查询以获取作业。
Example Url: '/api/jobs/?Groups=1,2&Statuses=3,4'
我想构建的MongoDB查询是:
{ $or: [{"Group.Id" : 1}, {"Group.Id" : 2}], $or: [{"Status.Id": 3}, {"Status.Id": 4}]}
如果我直接针对数据库运行这个,我得到了我需要的结果,但是我不能想到在JavaScript中动态构造查询的方法。我做过的任何尝试都会给我一个像这样的对象,因为$或属性只能在一个合适的JSON对象中存在一次。
{$or : [{"Group.Id" : 1}, {"Group.Id" : 2}]}
关于如何使用JavaScript或MongoDB Node API进行此操作的任何想法?
答案 0 :(得分:2)
首先获取查询属性,即字符串:
def disemvowel(word):
word = word.lower()
vowels = ["a" , "e", "i", "o", "u"]
return "".join([char for char in word if char not in vowels])
print disemvowel("Aaaallbag")
以逗号分割并解析为整数:
const groupString = req.query.Groups; // === '1,2'
const statusString = req.query.Statuses; // === '3,4'
然后搜索任何组ID。您的查询应如下所示:
const groupNums = groupString.split(',').map(parseInt); // === [1, 2]
const statusNums = statusString.split(',').map(parseInt); // === [3, 4]
对状态ID执行相同的操作。
答案 1 :(得分:0)
您可以使用此
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public int? MyNotNullable { get; set; }
但是在这种情况下,您必须发送MongoDB的相同名称字段和查询参数密钥。如果您这样做,它就是完全动态的查询构建器。