node.js - 使用 Mongoose 在对象 ids 数组中查找对象 id 返回空数组

标签 node.js mongodb mongoose schema tingodb

我有两个 Mongoose 模式:

var EmployeeSchema = new Schema({
    name: String,
    servicesProvided: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Service'
    }]
});

var ServiceSchema = new Schema({
    name: String
});

我正在尝试使用我发送到 http 请求中的服务 ID 来查找提供指定服务的员工。这是我的代码:

Employee
  .find({
    servicesProvided: req.params.service_id
  })
  .exec(function(err, employees) {
    if (err) {
      console.log(err);
      res.send(err);
    } else {
      res.json(employees);
    }
});

问题是这段代码返回一个空数组,我不知道为什么。我尝试了很多方法,例如将服务 id 转换为 mongoose.Schema.Types.ObjectId,但它不起作用。

有什么想法吗?我正在使用 Mongoose 3.8.39。谢谢!

最佳答案

在您的EmployeeSchema中,servicesProvided是一个数组,要按该字段过滤员工,您应该使用$in运算符:

var services = [req.params.service_id];
Employee.find({
  servicesProvided: {
    $in: services
  }
}, ...

关于node.js - 使用 Mongoose 在对象 ids 数组中查找对象 id 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36481712/

相关文章:

javascript - 填充字段然后找到 - Mongoose

java - Spring Data MongoDB - java.net.SocketException : Connection reset

node.js - 在 MongoDB 中删除时自动删除引用对象

git - 如何防止不需要的钩子(Hook)请求?

json - 响应应该具有两个给定属性中的任何一个

java - MongoTemplate聚合操作后没有返回结果

MongoDB/mongoose 查询和 $in 运算符

node.js - Mongoose findOne ObjectId 数组返回 null

php - docker + nginx + node.js + php-fpm

javascript - 为什么三元运算符默认为 true