无法使用 mongodb 在 node.js 中构建“$or”查询

cannot build an '$or' query in node.js with mongodb

我想有条件地附加一个$or查询,但是查询收不到我想在数据库中搜索的数据

它一直告诉我:

"Error :MongoError: Can't canonicalize query: BadValue $and/$or/$nor must be a nonempty array"

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

"Error :MongoError: Can't canonicalize query: BadValue $or needs an array"

谢谢!

例如:

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];
}

$or 需要是可能匹配条件的数组。你可以这样做:

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]});
}