2015-08-15 115 views
4

在LokiJS我尝试一个非常简单的查询(我假设是AND):与LokiJS:简单的查找查询返回错误结果

recsCol.insert({format:format, cardId:id, recCardId:key, amount:item[key]}); 

一点不插入一些数据之后

var dbRes = recsCol.find({'format':format, 'cardId':-1}); 

包含-1的cardId。

该查询仍然会产生结果。这是预期的行为?如果是这样,我怎么才能使字段完全匹配,以便在这种情况下我不会得到结果?

回答

6

你可以做一个并在LokiJS,没有问题:

var dbRes = recsCol.find({'$and': [{'format':format}, {'cardId':-1}]}); 

我建议使用找到一次性查询。如果查询在可能更改的结果集上多次出现,那么肯定使用视图。

+0

这样做会做同样的事情。每个字段需要位于其自己的查询对象中,以使其成为AND。 –

+0

@AlexKinnee你是对的,对我来说有些疏忽,因为我看到了我写的LokiJS!我更新了答案,谢谢。 –

+1

@AlexKinnee我也提高了你的答案,因为它实际上是正确的,但我的一个被标记为正确的,所以我不想让人误解。 –

4

默认情况下,查询对象中的所有字段都被视为OR。要使其成为AND,您需要将查询语法更改为以下内容:

recsCol.find({ 
    $and: [ 
     {'format':format}, 
     {'cardId':-1} 
    ] 
});