无法使用mongodb在node.js中构建'$或'查询

时间:2016-08-11 08:02:13

标签: node.js mongodb mongoose mongodb-query mongodb-java

我想有条件地附加$或查询,但查询无法接收我想在db中搜索的数据

它一直在告诉我:

  

“错误:MongoError:无法规范查询:BadValue $和/ $或/ $也不能是非空数组”

或者如果我初始化查询。$或as {}

  

“错误:MongoError:无法规范查询:BadValue $或需要数组”

感谢!

例如:

var user = {
      name:"Toby",
      gender:"Female",
      contact:[
        {email:"123@gmail.com"},
        {email:"APPLE@gmail.com"},
        {email:"news456@gmail.com"}]};
var query = {};
var q = ['123@gmail.com','news456@gmail.com'];
query.name = user.name;
if(user.contact!=null){
  query.$or = [];
  query.$or['contact.0.email'] = q[0];
  query.$or['contact.1.email'] = q[1];
}

1 个答案:

答案 0 :(得分:2)

$或者需要是一系列可能的匹配条件。你可以这样做:

var user = {
      name:"Toby",
      gender:"Female",
      contact:[
        {email:"123@gmail.com"},
        {email:"APPLE@gmail.com"},
        {email:"news456@gmail.com"}]};
var query = {};
var q = ['123@gmail.com','news456@gmail.com'];
query.name = user.name;
if(user.contact!=null){
  query.$or = [];
  query.$or.push({'contact.email': q[0]});
  query.$or.push({'contact.email': q[1]});
}