2016-12-03 87 views
0

我試圖通過匹配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而不是全部的對象。

請告訴我如何才能做到這一點。

+0

請看看這個。 http://stackoverflow.com/a/40932617/2683814。基本上你使用$ filter aggregator運算符來返回給定條件的所有匹配記錄。 – Veeram

回答

0

您可以將此用於reference。 你的代碼會是這樣的:

Review.find({ 
    product_id: '583ae172231f5ec01db5727e' 
    }, 
    { 
     reviews: { 
      $elemMatch: { 
       fb_id: { 
        $in: <array of fb_id> 
       } 
      } 
     } 
    }, 
    { 
     _id: 0, 
     'reviews.$': 1 
    } 
, function(err, results) { 
    if (err) { 
     throw err; 
    }; 
    console.log(results) 
}); 
+0

這隻返回與數組匹配的第一個項目。它不會返回所有匹配 – v1shnu

+0

的商品,也許是因爲'product_id'!它應該是獨一無二的?! –

+0

是產品ID是唯一的。我希望評論與fb Id僅適用於該產品ID。 – v1shnu

相關問題