【问题标题】:Waterline (Sails.js): AND conditions水线(Sails.js):AND 条件
【发布时间】:2014-06-27 21:46:46
【问题描述】:

我正在使用带有sails.js 的mongodb 来查询包含torrent 文件标题的模型。但我无法使用“AND”条件执行水线查询。我已经尝试了几种方法,但大多数都返回空或干脆,永远不会返回。

例如该数据库包含一个条目: "title": "300 Rise Of An Empire 2014 720p BluRay x264-BLOW [Subs Spanish Latino] mkv"

逐行添加每个查询参数时:

var query = Hash.find();
query = query.where({ "title": { "contains": "spanish" } });
query = query.where({ "title": { "contains": "2014" } });
query = query.where({"or": [ { "title": { "contains": "720p" } }, { "title": { "contains": "1080p" } } ] });

它返回包含“2014”AND(“720p”或“1080p”)的条目,其中一些还包含“西班牙语”,但我认为这只是巧合。

如何指定“西班牙文”和“2014”和(“720p”或“1080p)?

谢谢!

【问题讨论】:

    标签: javascript node.js sails.js waterline sails-mongo


    【解决方案1】:

    有一个解决方案,但它确实是一个 mongo :

    query = query.where({"$and": [ { "title": { "contains": "720p" } }, { "title": { "contains": "1080p" } } ] });
    

    注意到$and 键了吗?

    来自sails-mongo 来源:

    /**
     * Parse Clause
     *
     * <clause> ::= { <clause-pair>, ... }
     *
     * <clause-pair> ::= <field> : <expression>
     *                 | or|$or: [<clause>, ...]
     *                 | $or   : [<clause>, ...]
     *                 | $and  : [<clause>, ...]
     *                 | $nor  : [<clause>, ...]
     *                 | like  : { <field>: <expression>, ... }
     *
     * @api private
     *
     * @param original
     * @returns {*}
     */
    

    【讨论】:

      【解决方案2】:

      使用这个:

      var query = {
        title: [
           { contains: "spanish"},
           {contains: "2014"}
        ],
        or: [
           {title: { contains: "720p" } },
           {title: { contains: "1080p" } },
        ]
      };
      
      Model.find(query).exec(function(err,items) {
        ....
      });
      

      【讨论】:

      • 谢谢,但它不起作用,返回一个空集。
      • 抱歉耽搁了,我没有注意到。您可以使用我的第一篇文章here 中的方法查看 db 查询的结果。它们被截断。只需编辑 url 中的“查询”参数即可搜索不同的术语。您也可以使用 2014 spanish 720p | 1080p 作为参数,linksample output
      • 我最终在标题字段上使用了文本索引,所以现在一切都变了,无论如何,谢谢。
      猜你喜欢
      • 2014-12-14
      • 2015-01-03
      • 1970-01-01
      • 2014-08-19
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多