Waterline/Sails.js/Mongo如何使用和查询一个字段的条件?

Waterline/Sails.js/Mongo如何使用和查询一个字段的条件?,sails.js,waterline,Sails.js,Waterline,我的问题和你的一样。有一个答案,但对我来说不起作用(对提问者也不起作用) 据我所知,waterline的查询语言中没有关键字“and”。 如果我要查询多个条件,我可以简单地使用: MyModel.find({fieldA:valueA, filedB:valueB}); 但我的问题是如何做到: MyModel.find({fieldA:{ contains:keyword1, contains:keyword2 }}); 因为我无法在Object/JSON中设置两个同名键,所以

我的问题和你的一样。有一个答案,但对我来说不起作用(对提问者也不起作用)

据我所知,waterline的查询语言中没有关键字“and”。 如果我要查询多个条件,我可以简单地使用:

MyModel.find({fieldA:valueA, filedB:valueB});
但我的问题是如何做到:

MyModel.find({fieldA:{
   contains:keyword1, 
   contains:keyword2
}});
因为我无法在Object/JSON中设置两个同名键,所以我尝试:

MyModel.find({fieldA:
  [
   {contains:keyword1}, 
   {contains:keyword2}
  ]
});

但它们都没有像预期的那样工作:第一个和第二个返回空集,第三个只包含关键字2。 似乎当您试图使用链接的“where”方法将两个“contains”条件添加到同一个字段(fieldA)时,第二个条件将覆盖第一个条件

我正在使用本地mongoDB的方法来解决这个问题,有人知道如何用waterline的方法来解决这个问题吗?或者这是一个应该在github上报告的问题


PS:对不起,我的英语很差:p

要回答你的问题,不支持多个
包含
。无论是遗漏还是功能请求都有争议。至少对于SQL来说,能够支持以下内容是一个愚蠢的简单修复(尽管我花了一个多小时才找到它):

orm.collections.user.find({
            and: [
                { name: { contains: 'neil' } },
                { name: { contains: 'armstrong' } }
            ]
        });
它只需要在以下文件中添加一个
case'和':
,即可工作:


我怀疑Mongo的情况也会类似。

我找到了Mongo数据库应该采用的方法

您应该能够使用
$和
键在同一字段上组合多个标准:

orm.collections.user.find({
        $and: [
            { name: { contains: 'neil' } },
            { name: { contains: 'armstrong' } }
        ]
    });
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 {*}
 */
/**
*解析子句
*
*  ::= { , ... }
*
*  ::=  : 
*|或|$或:[,…]
*|$or:[,…]
*|$和:[,…]
*|$nor:[,…]
*|像:{:,…}
*
*@api private
*
*@param-original
*@returns{*}
*/

感谢您的回复和宝贵时间!:)所以我应该在github上报告这是一个bug(或者发送一个功能请求)?可以在mongo上工作吗。。。想知道我是否做错了什么,或者水线是否真的远远落后,它确实有效!看看我的答案!使用$而不是mongoDid,有人在github上为此提出了一个问题?
orm.collections.user.find({
        $and: [
            { name: { contains: 'neil' } },
            { name: { contains: 'armstrong' } }
        ]
    });
/**
 * 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 {*}
 */