不知道如何编写复杂的Mongoose查询

时间:2016-04-12 18:48:36

标签: node.js mongoose

以下是用于在一个国家/地区显示当前锦标赛的架构:

var TournamentSchema = new mongoose.Schema({
  name: String,
  location: String,
  googlelink: String,
  description: String,
  format: String,
  date: Date
  closedate:Date
  type:String

});

该网页还有电子商务网站中的过滤器。如果假设我从url获得一个查询,例如: https://www.example.com/format=5v5%7v7&&location=hyd&&ahmedabad

我需要查询5v5或7v7格式的比赛,以及Hyd和Ahmedab​​ad的比赛。

我需要编写通用查询,因为我不知道地点和格式的数量。

我不知道该怎么做。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

以下是我编写的使用mongoose $或。

的查询示例
Event.find( { $or: [{ joiners:   req.user._id  },  { creator: req.user._id}]  }  )  
.populate('creator')

.exec(function(err, goevent){
    if(err){
        console.log(err)
    } else {
        res.json(goevent)
    }
})

基本上在您的查询参数{}中,您可以传递以下内容:

{ $or: [ { query: one}, {query: two} ] }

像这样:

Model.find({ $or: [ { query: one}, {query: two} ] }, function(err, data){
  //err & success handlers
}

一旦你明白了,你也可以使用一堆其他逻辑运算符,比如$and

如果要查询的对象是嵌套的,则只需执行'some.property'(使用点表示法访问对象时使用字符串语法)