水线(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) { .... });