如何在多个字符串上查询mongo集合

时间:2013-04-03 11:41:44

标签: mongodb mongodb-.net-driver

我是Mongo Db的新手并试图写一些查询。

我需要提取品牌价值不等于'any'或'none'或包含'not'的产品列表。

我已尝试过这个问题,但它没有用。

var query = { "BarCode": { "$exists": 1,"$not":"any" }};

但它提供的错误很少。有人可以帮助我。

谢谢,

纳雷什

3 个答案:

答案 0 :(得分:5)

使用$ ne运算符“not equal”(http://docs.mongodb.org/manual/reference/operator/ne/#op._S_ne):

var query = { "BarCode": { "$exists": 1, "$ne": "any" }};

所以完整的查询可能如下所示:

var query = { "Barcode": { "$exists": 1, "$nin": [ "any", "none"], "$not": /not/ }}

$ nin运算符(“not in”)选择字段值不是指定值之一的文档(请参阅http://docs.mongodb.org/manual/reference/operator/nin/#op._S_nin)。 $ not运算符在正则表达式运算符上执行逻辑NOT(请参阅http://docs.mongodb.org/manual/reference/operator/regex/#op._S_regex)。如果字段不应包含单词“not”,请使用更复​​杂的正则表达式。请记住,此查询不会使用任何索引,因为正则表达式不以^开头。

答案 1 :(得分:1)

请使用此URL,其中包含从SQL到mongoDB查询的映射:http://docs.mongodb.org/manual/reference/sql-comparison/ 对于您的解决方案,这将有效。对于带有多个数组的NOT IN,请使用$ nin

SELECT * FROM users WHERE status != "A"  =>  db.users.find({ status: { $ne: "A" } } )

答案 2 :(得分:0)

如果您想使用RegEx匹配对多个字符串执行操作,请使用以下代码。

$matchStr = array( new MongoRegex('/school/i'), new MongoRegex('/college/i') );

$whereCondition = array(
    'name' => array('$nin' => $matchStr),
    'name' => array('$exists' => 1)
   );

$response = $this->Collection->find($whereCondition);

本规范将提供所有输出响应,其中没有学校大学字样。它对我来说很完美。