2016-03-27 27 views
-1

我有兩個獨立的MongoDB集合存貨並已售出。加入替代方案:在pymongo中查詢兩個集合

我想獲得某些庫存類型的所有銷售條目。 股票類型的信息在另一個稱爲股票的集合中,都有獨特的股票指數。

由於我無法加入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' object has no attribute 'Stock_Index'

先謝謝您的任何答覆。

+1

'i [「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] 

作爲一個側面說明,你不可能在使它單個查詢,因爲您無法在一個查詢中加入兩個集合,請參閱更多:

+0

嗨,謝謝你的迴應:)我有另一個空白列表[]返回的問題,但是當我返回之前打印列表的長度時,服務器總是打印一個大於1的數字。我是很確定這個列表不應該是空的,這真的很奇怪。 – noob