加入替代方案:在pymongo

时间:2016-03-27 12:53:23

标签: python mongodb pymongo

我有两个单独的MongoDB系列库存并已售出。

我想获得某些股票类型的所有卖出条目。 股票类型的信息在另一个名为stock的集合中,两者都有唯一的股票指数。

由于我无法加入MongoDB,因此我尝试查询两个集合。 最好的方法是什么?

我试过了:

cursor1 = db.stock.find({
    "$or": [
        {“Stock_Type": 1},
        {“Stock_Type": 2},
        {“Stock_Type": 3},
        ]
    })

stock_id = []

for i in cursor:
    stock_id.append(i.Stock_Index)

cursor2 = db.sold.find({
    "$and": [
        {“Stock_Index": {"$in": stock_id}},
        {“Month”: “February},
        {“Category”:5}
        ]
    })

在上述情况下,我收到内部服务器错误:

  

AttributeError:'dict'对象没有属性'Stock_Index'

预先感谢任何回复。

1 个答案:

答案 0 :(得分:1)

pymongo游标中的每个项目都是MongoDB文档,它在Python中用表示为字典。您不能使用点表示法来访问词典中的项目 - 而是使用:

stock_id = []
for i in cursor:
    stock_id.append(i["Stock_Index"])

或者,使用list comprehension

stock_id = [i["Stock_Index"] for i in cursor]

作为旁注,您无法在一个查询中创建它,因为您无法在一个查询中加入两个集合,请参阅以下内容: