如何过滤多个标准而不是在nodejs& MongoDB的

时间:2016-12-26 09:04:41

标签: node.js mongodb

我正在使用nodejs和mongodb。在mongo db中,有用户集合,其中属性是名称和状态。状态记录有'A','B','C'和'D'。我想在名称数组和状态中过滤记录,除了'A'。怎么做?

var nameArr = [];
nameArr.push('Jojo');
nameArr.push('Legend');

// The record return null when i added status: !'A'
db.collection('users').find({name: {$in: nameArr},{status: !'A'}}).toArray(function (resp) {
     res.json({code: '00', content: resp});
});

用户架构

{
  "_id": ObjectId("515fd5f42a84cb610eed23es"),
  "name": "Jojo",
  "status": "A"
}
{
  "_id": ObjectId("584fd5f42a84cb610eed23ef"),
  "name": "Legend",
  "status": "C"
}
{
  "_id": ObjectId("585fd5f42a84c1110eed23ef"),
  "name": "Mark",
  "status": "D"
}
{
  "_id": ObjectId("585fd5ss42a84cb610eed23ee"),
  "name": "Swish",
  "status": "B"
}

预期输出

{
  "_id": ObjectId("584fd5f42a84cb610eed23ef"),
  "name": "Legend",
  "status": "C"
}

2 个答案:

答案 0 :(得分:1)

您可以使用$ne运算符:

可能的查询:

Comparable

答案 1 :(得分:1)

你正在走上正轨,但是" !"在MongoDb中不起作用。

您可以使用$ne

db.collection('users').find({name: {$in: nameArr},status: { $ne :'A'}}).toArray(function (resp) {
     res.json({code: '00', content: resp});
});

$ ne是用于检查mongoDb中的Not Enquals to的运算符。

如需了解更多信息,请浏览MongoDB $ne Documentation

希望这有帮助!