[英]mongoose find document by subdocument's _id
Let say I have the following structure: 假设我具有以下结构:
var Partner = require('../partner/partner.model');
var ContractSchema = new Schema({
// blahblah
partners: [Partner.schema]
});
So here every contract has an array of partners, and each partner has an _id
property. 因此,这里每个合同都有一系列合作伙伴,每个合作伙伴都有一个
_id
属性。
I want to search for a contract, which has a partner with a specific _id
. 我想搜索一个合同,其中有一个具有特定
_id
的伙伴。 I tried this, but didn't work: 我试过了,但是没用:
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);
}
});
EDIT: Here's an example what I have in the db:
编辑:这是我在数据库中的示例:
{
"_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
}
As @robertklep said, this is working: 就像@robertklep所说的,这是有效的:
Contract.find({ "partners._id": req.query.partnerId})
.then(function(contracts) {
return res.status(200).json(contracts);
})
.catch(function(err) {
return handleError(res, err);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.