考虑以下三个集合,其中我使用 $ lookup 将集合1 与集合2 分组。我能够获得阿迪达斯鞋的二手价格但是当用户选择PUMA鞋时,也会显示阿迪达斯二手鞋(尝试使用$ match),因为产品名称在所有3个系列中都相似。我想要的是使用相同的聚合函数我希望显示结果如果平台是ADIDAS,如果不是ADIDAS那么它不应该显示PUMA的预占结果。
我可以通过在我的Jinja模板中使用if else语句来处理这个问题,但我不想这样做。我想在我的聚合函数中处理这些东西
所以函数就像这样
以下是我在我的pymongo中使用的代码。我在我的平台上指定了一个$ match但它似乎不起作用。
db.collection1.aggregate([
{'$match': {'Platform':{'$eq':[variable]}}},
{'$lookup':{
'from': 'collection2',
'localField': 'Product',
'foreignField': 'Product',
'as': 'Matches'}}
])
此处的变量是我想要提供的输入。
以下是有人想要测试的数据
收集1 - 新的 产品价格平台 运动鞋800阿迪达斯 靴子700阿迪达斯 跑鞋600阿迪达斯
收集2 - 二手 产品价格平台 运动鞋300阿迪达斯 靴子100阿迪达斯 跑鞋200阿迪达斯
收集3 - 新增 产品价格平台 运动鞋900 Puma 靴子600 Puma 跑鞋600 Puma
我的收藏结构如下:
{
"_id" : ObjectId("5af963c351f4944d713484da"),
"Platform" : "Adidas",
"Price" : NumberInt(2000),
"Product" : "Sneakers"
}