Python 联接备选方案:在pymongo中查询两个集合

Python 联接备选方案:在pymongo中查询两个集合,python,mongodb,pymongo,Python,Mongodb,Pymongo,我有两个独立的MongoDB系列库存和出售 我想得到特定股票类型的所有销售条目。 股票类型的信息位于另一个名为stock的集合中,两者都有唯一的股票指数 因为我不能加入MongoDB,所以我尝试查询这两个集合。 最好的办法是什么 我试过: cursor1 = db.stock.find({ "$or": [ {“Stock_Type": 1}, {“Stock_Type": 2}, {“Stock_Type": 3}, ]

我有两个独立的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'


提前感谢您的回复

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

stock_id = []
for i in cursor:
    stock_id.append(i["Stock_Index"])
或者,使用:


作为补充说明,您不可能在一个查询中完成此操作,因为您无法在一个查询中联接两个集合,请参阅以下内容:


您好,感谢您非常有用的回复:)我遇到了另一个问题,返回了一个空列表[],但是当我在返回之前打印列表长度时,服务器总是打印一个大于1的数字。我很确定这个列表不应该是空的,这真的很奇怪。你的一些双引号很吓人。
stock_id = [i["Stock_Index"] for i in cursor]