javascript - Mongoose 通过子文档的_id查找文档

标签 javascript node.js mongodb mongoose

假设我有以下结构:

var Partner = require('../partner/partner.model');

var ContractSchema = new Schema({
      // blahblah
      partners: [Partner.schema]
});

所以这里每个合约都有一个合作伙伴数组,每个合作伙伴都有一个 _id 属性。

我想搜索一份契约(Contract),其中的合作伙伴具有特定的 _id。 我试过了,但没用:

  var ObjectId = require('mongoose').Types.ObjectId;    
  Contract.find({
      partners: {
        $elemMatch: {
          _id: {
            $eq: new ObjectId(req.query.partnerId)
          }
        }
      }
    }, function (err, serviceContracts) {
      if (err) {
        return handleError(res, err);
      } else {
        return res.status(200).json(serviceContracts);
      }
    });

编辑:这是我在数据库中的示例:

{
    "_id" : ObjectId("57e370e72beac9fc21c99ca3"),
    "updatedAt" : ISODate("2016-09-22T05:49:27.000Z"),
    "createdAt" : ISODate("2016-09-22T05:49:27.000Z"),
    "currency" : "USD",
    "partners" : [ 
        {
            "updatedAt" : ISODate("2016-09-22T05:49:27.000Z"),
            "createdAt" : ISODate("2016-09-22T05:49:27.000Z"),
            "name" : "Apple Inc.",
            "_id" : ObjectId("57e370e72beac9fc21c99caa")
        }
    ],
    "__v" : 0
}

最佳答案

正如@robertklep 所说,这是可行的:

Contract.find({ "partners._id": req.query.partnerId})
  .then(function(contracts) {
    return res.status(200).json(contracts);
  })
  .catch(function(err) {
    return handleError(res, err);
  });

关于javascript - Mongoose 通过子文档的_id查找文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821371/

相关文章:

javascript - Cloud Functions for Firebase 上的 Passport.js 给出错误 "Cannot read property ' apply' of undefined"

python - 如何检查 pymongo 游标是否有查询结果

javascript - TypeError : $(. ..).timepicker 不是函数

javascript - 如何使用 CSS3 动态创建 jQuery UI 元素的样式?

javascript - 用 cheerio 检测内联元素?

javascript - Node.js 支持 =>(箭头函数)

mongodb - mongoid 中的排序和分组

javascript - 如何在一个 grunt.registerTask 中调用多个 grunt.run.task?

javascript - 从没有页眉和页脚的 javascript 打印 : state of the art?

javascript - Highcharts 饼图数据格式通过 php