【发布时间】:2017-04-18 03:50:06
【问题描述】:
我试图通过匹配我传递的fb_id 来获取reviews 数组中的对象。我似乎没有让他们工作。这是我在数据库中的实际文档
{
"_id": {
"$oid": "5841d18187dcc74805887a6a"
},
"product_id": "583ae172231f5ec01db5727e",
"category": "Smartphones",
"reviews": [
{
"fb_id": "111",
"name": "name1",
"user_img": "imgurl1",
"title": "asdakj",
"description": "jnkjnkj",
"rating": 5,
"_id": {
"$oid": "5841d18187dcc74805887a6b"
}
},
{
"fb_id": "222",
"name": "name2",
"user_img": "imgurl2",
"title": "dadad",
"description": "asdasdad",
"rating": 3,
"_id": {
"$oid": "5841d1d0cbdf333411530ebd"
}
},
{
"fb_id": "333",
"name": "name3",
"user_img": "img url3",
"title": "asdad",
"description": "asdads",
"rating": 5,
"_id": {
"$oid": "5841d4c2174270f807084721"
}
},
{
"fb_id": "444",
"name": "name4",
"user_img": "imgurl4",
"title": "adasd",
"description": "kjnkj",
"rating": 1,
"_id": {
"$oid": "5841d569eae1b6600ea1ca92"
}
}
],
"__v": 0
}
我将向 mongoose 发送一个 fb_id 的数组,并且只希望数组中包含 fb_id 的对象的结果。
这是我现在的查询:
Review.find({ product_id: '583ae172231f5ec01db5727e' }, { 'reviews.$.fb_id': { $in: <array of fb_id> } }, function(err, results) {
if (err) {
throw err;
};
console.log(results)
});
但它给了我这个错误:
MongoError: Unsupported projection option: reviews.$.fb_id: { $in: [ 111.0 ] }
编辑:经过一个小查询,现在我要得到一些结果。但结果只有第一个与fb_id 匹配的对象,而不是全部。
请告诉我如何实现这一目标。
【问题讨论】:
-
请看这个。 stackoverflow.com/a/40932617/2683814。基本上,您可以使用 $filter 聚合器运算符返回给定条件的所有匹配记录。