在pymongo / mongodb

时间:2018-05-21 06:12:28

标签: python mongodb aggregation-framework pymongo

考虑以下三个集合,其中我使用 $ lookup 集合1 集合2 分组。我能够获得阿迪达斯鞋的二手价格但是当用户选择PUMA鞋时,也会显示阿迪达斯二手鞋(尝试使用$ match),因为产品名称在所有3个系列中都相似。我想要的是使用相同的聚合函数我希望显示结果如果平台是ADIDAS,如果不是ADIDAS那么它不应该显示PUMA的预占结果。

我可以通过在我的Jinja模板中使用if else语句来处理这个问题,但我不想这样做。我想在我的聚合函数中处理这些东西

所以函数就像这样

  • 用户选择ADIDAS鞋
  • 如果ADIDAS的二手鞋存在于带有平台ADIDAS的第2集中,则显示预售价格
  • 如果没有,则不要为PUMA展示阿迪达斯的二手鞋

enter image description here

以下是我在我的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"
}

0 个答案:

没有答案