我試圖通過匹配fb_id
的內容來獲取reviews
數組中的對象。我似乎沒有讓他們工作。這是DBMongoose只從對象內部的數組匹配元素中獲取對象
{
"_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
}
我的實際文件我將派遣的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
而不是全部的對象。
請告訴我如何才能做到這一點。
請看看這個。 http://stackoverflow.com/a/40932617/2683814。基本上你使用$ filter aggregator運算符來返回給定條件的所有匹配記錄。 – Veeram