【发布时间】:2016-04-23 20:01:01
【问题描述】:
我有文档 GradePovider,包含元素:
{
"_id": ObjectId("568a466f2c48409006ab4862"),
"values": [
{
"_id": ObjectId("568a466f2c48409006ab4868"),
"description": "has et delicata moderatius"
},
{
"_id": ObjectId("568a466f2c48409006ab4867"),
"description": "description two"
},
{
"_id": ObjectId("fakeId"),
"description": "description three"
}
]
}
我想按 value._id 列表进行搜索。 这样我就可以响应 [ObjectId("568a466f2c48409006ab4868"), ObjectId("568a466f2c48409006ab4867")] 的搜索:
{
"_id": ObjectId("568a466f2c48409006ab4862"),
"values": [
{
"_id": ObjectId("568a466f2c48409006ab4868"),
"description": "has et delicata moderatius"
},
{
"_id": ObjectId("568a466f2c48409006ab4867"),
"description": "description two"
}
]
}
我尝试使用此代码:
gradeModel.GradeProvider.find({
'values._id': {
$in: node.grades
}
}, {
"values.$": true
}, function (err, gradeProviders) {}
此代码仅返回每个gradeProvider 的第一个匹配值。 我想我需要使用这个聚合。到目前为止,我还没有成功。
radeModel.GradeProvider.aggregate([{
$match: {
'values._id': {
$in: node.grades
}
}
}, {
$project: {
providerName: 1,
values: 1
}
}], function (err, gradeProviders) {}
此代码返回正确的 GradesProviders,但它返回所有值。
谢谢!
【问题讨论】: