0

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

我需要获取品牌价值不等于“任何”或“无”或包含“不”的产品列表。

我已经尝试了一些东西,但它不起作用。

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

但它给出的错误很少。有人可以帮助我。

谢谢,

纳雷什

4

3 回答 3

5

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

于 2013-04-03T11:54:10.400 回答
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" } } )
于 2013-04-03T11:52:58.163 回答
0

如果你想用正则表达式匹配多个字符串,那么使用下面的代码。

$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);

此代码将提供所有没有学校大学单词的输出响应。它对我来说很完美。

于 2017-08-30T15:06:38.463 回答