【问题标题】:LokiJS: Simple find query returns wrong resultLokiJS:简单的查找查询返回错误的结果
【发布时间】:2015-08-15 11:51:15
【问题描述】:

在 LokiJS 中,我尝试了一个非常简单的查询(我假设是 AND):

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

插入一些数据后

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

不包含 -1 的 cardId。

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

【问题讨论】:

    标签: javascript in-memory-database lokijs nosql


    【解决方案1】:

    你可以在 LokiJS 中做 AND,没问题:

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

    我建议将 find 用于一次性查询。如果查询在可能发生变化的结果集上出现多次,那么一定要使用视图。

    【讨论】:

    • 这将做同样的事情。每个字段都需要在自己的查询对象中才能成为 AND。
    • @AlexKinnee 你是对的,在我写 LokiJS 时看到了一些疏忽!我更新了答案,谢谢。
    • @AlexKinnee 我也赞成你的答案,因为它实际上是正确的,但我的答案被标记为正确,所以我不希望人们被误导。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      相关资源
      最近更新 更多