如果数组为空,如何查找所有内容,mongodb

时间:2019-03-17 14:01:29

标签: mongodb

我正在尝试对我的数据库进行一些查询...但是我是mongodb的新手,我不知道我必须使用什么运算符,或者也许我只是不知道该怎么做。

我有一个像这样的集合。

const userSchema= new Schema({
    user: { type: String },
    object: { type: String }
})

然后我在服务器中收到这样的查询

{
users: ['John', 'Michael', 'Peter'],
objects: ['Object1','Object2','Object3','Object4', 'Object5']
}

所以..在我的控制器中,我这样做是为了找到...

userModel.find({ user: { $in: req.body.users}, object: { $in: req.body.objects})
        .then((users)=>{
          res.json(users)
        })

好吧,这是行得通的...但是,如果用户或对象数组之一为空,它什么也找不到...所以,我该如何处理呢?如果数组为空或什么东西,有什么运算符可以找到全部?

例如..如果查询是这样的

{
users: ['John', 'Michael', 'Peter'],
objects: []
}

即使我没有收到任何对象,我也想在我的Users数组中查找用户。

有帮助吗?预先谢谢你

1 个答案:

答案 0 :(得分:2)

您必须创建自定义匹配条件

const query = {
  fieldName: { $gte: ..., $lte: ... }
}
if (req.body.users.length > 0) {
  query.users = req.body.users
}
if (req.body.objects.length > 0) {
  query.objects = req.body.objects
}

userModel.find(query).then((users) => {
  console.log(users)
})