我是 Mongo Db 的新手,并试图写一些查询。
我需要获取品牌价值不等于“任何”或“无”或包含“不”的产品列表。
我已经尝试了一些东西,但它不起作用。
var query = { "BarCode": { "$exists": 1,"$not":"any" }};
但它给出的错误很少。有人可以帮助我。
谢谢,
纳雷什
我是 Mongo Db 的新手,并试图写一些查询。
我需要获取品牌价值不等于“任何”或“无”或包含“不”的产品列表。
我已经尝试了一些东西,但它不起作用。
var query = { "BarCode": { "$exists": 1,"$not":"any" }};
但它给出的错误很少。有人可以帮助我。
谢谢,
纳雷什
将 $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)。如果该字段不应包含“不”一词,请使用更复杂的正则表达式。请记住,此查询不会使用任何索引,因为正则表达式不以^
.
请使用此 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" } } )
如果你想用正则表达式匹配多个字符串,那么使用下面的代码。
$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);
此代码将提供所有没有学校或大学单词的输出响应。它对我来说很完美。