我在一个Parse实体上有一个Boolean列,我想查询所有具有此列的行,这些行要么显式设置为false,要么保留其默认undefined值。

我无法执行equalTo('myBoolColumn', false),因为它不会返回该列具有undefined值的行。

我宁愿不做notEqualTo('myBoolColumn', true),因为Parse documentation指出notEqualTo查询效率不高,因为它们无法利用索引。

该文档建议改用containedIn,但编写containedIn('myBoolColumn', [false, undefined])查询以实现预期结果感觉不对。

看来notEqualTo bool 查询仍然可以建立索引,但是我没有找到可以证实这一点的权威信息,而且我不知道如何测试该查询是否使用索引。

所以我应该使用哪一个:notEqualTo('myBoolColumn', true)containedIn('myBoolColumn', [false, undefined])

最佳答案

您想像这样结合两个查询:

var falseQuery = new Parse.Query('YourClass');
falseQuery.equalTo('myBoolColumn', false);

var undefinedQuery = new Parse.Query('YourClass');
undefinedQuery.doesNotExist('myBoolColumn');

//this is the query you should run
var query = Parse.Query.or(falseQuery, undefinedQuery);
query.find({....});

10-05 21:07
查看更多