我有两个单独的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'
预先感谢任何回复。
答案 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]
作为旁注,您无法在一个查询中创建它,因为您无法在一个查询中加入两个集合,请参阅以下内容: