水线(Sails.js):AND条件

我正在使用mongodb和sails.js查询包含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”和(“720p”或“1080p”)的条目,其中一些还包含“西class牙文”,但我认为这只是一个巧合。

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

谢谢!

有一个解决scheme,但它确实是一个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 {*} */ 

用这个:

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