我尝试使用OR和AND操作来执行具有多个约束的Parse.Query。例如,这样的操作:
(x1>2 OR x2<5) && (x3 equalTo 4) && (x4>7 OR x5<8)
x1
,x2
,x3
变量代表特定字段的查询约束。我知道我可以使用两个不同的查询作为参数来执行Parse.Query.or,然后执行AND操作,为结果添加其他约束,如下所示:
var lotsOfWins = new Parse.Query("Player");
lotsOfWins.greaterThan(150);
var fewWins = new Parse.Query("Player");
fewWins.lessThan(5);
var mainQuery = Parse.Query.or(lotsOfWins, fewWins);
但如果我有多个&#34; OR&#34;我怎么能进行之前描述的操作呢?操作?有没有办法直接在MongoDB中制作约束?
答案 0 :(得分:0)
根据the API documentation,您可以将任意数量的参数传递给Parse.Query.or
。
答案 1 :(得分:0)
我们希望以析取形式进行查询,所以:
(x1>2 OR x2<5) && (x3 equalTo 4) && (x4>7 OR x5<8)
可以重申为:
(A || B) && E && (C || D)
然后通过将CNF转换为DNF(cool tool by wolfram.alpha here)
进行重述(A && C && E) || (A && D && E) || (B && C && E) || (B && D && E)
然后重新作为查询:
var q0=new Parse.Query("Player");
q0.greaterThan("x1", 2);
q0.greaterThan("x4", 7);
q0.equalTo("x3", 4);
var q1=new Parse.Query("Player");
q1.greaterThan("x1", 2);
q1.lessThan("x5", 8);
q1.equalTo("x3", 4);
var q2=new Parse.Query("Player");
q2.lessThan("x2", 5);
q2.greaterThan("x4", 7);
q2.equalTo("x3", 4);
var q3=new Parse.Query("Player");
q3.lessThan("x2", 5);
q3.lessThan("x5", 8);
q3.equalTo("x3", 4);
// notice the square braces. the param to or is an array
var mainQuery = Parse.Query.or([q0, q1, q2, q3]);