0
我想应用条件的Mongo Db的聚合输出,但仍然没有弄清楚这个想法。下面是我的示例文件:如何应用过滤器来输出Mongo Db的聚合框架?
{
'id':1,
'customerReviews':[5,7,8],
'expertReviews':[9,8,9]
},
{
'id':1,
'customerReview':[6,7,7],
'expertReview':[4,8,9]
}
所以,如果我有一个像找到的所有文件的要求,其具有分钟(customer_review)> 5 - >只有第二份文件是正确的。
这里的文件我最初点,这让分(顾客审查):产生
db.getCollection('subscriber').aggregate([
{$unwind:"$customerReviews"},
{"$group":{
"_id":"$_id",
"min_customer_review":{"$min":"$customerReviews"}}}
]);
:
{
"_id" : ObjectId("58ab1d6892bf3194a9719883"),
"min_customer_review" : 5
},
{
"_id" : ObjectId("58ab1d6892bf3194a9719883"),
"min_customer_review" : 6
}
因此,如何继续聚集输出应用过滤器来获取所有的文件,其有min_customer_review> 5?
还有一个问题,是否可以应用第二个聚合,如“获取所有min_customer_review> 5或average_expert_reviews> 6的电影”?
谢谢ü所有
非常感谢替换值,所以如何在列表中,如“在租赁1专家评审> 8”的每一个元素执行条件。我尝试:{$或:[{$ gt:[{$ min:“$ customerReviews”},5]},{expertReviews:{$ elemMatch:{$ gt:8}}}]}但它返回无法识别的表达式$ elemMatch - InvalidPipelineOperator。最后一个问题:所有这些查询都可以使用BasicDbObject for Java来完成,对吧? – keduadoi
不客气。所有操作都在java驱动程序中受支持。 '$ elemmatch'只能在'$ match'stage中使用。我不能想到聚合管道中的任何类似的操作员。 – Veeram