2011-09-14 53 views
2

我正在使用pymongo並且目前有一個集合。該集合保存代表足球聯賽比賽的文件。每場比賽都有目標。目前,該目標被實現爲包含在匹配對象的列表:

{'matchID':1000, 
    'goals':[{'goalID':200,'scorer':'A'}, 
      {'goalID':201,'scorer':'B']} 
      ] 
} 
{'matchID':1001, 
    'goals':[{'goalID':211,'scorer':'C'}, 
      {'goalID':212,'scorer':'D']} 
      ] 
} 

我想要做的就是用高於一個ID的所有目標的查詢,說201我會從數據有什麼期望上面是我會得到目標211和212

如何在MongoDB中實現這一點 - 我想喜歡的東西:

x = mycollection.find({'$gt':[{'match.goals.goalID':201}]}) 

但沒有得到我到任何地方。我應該將目標分解爲單獨的集合並手動引用嗎?一旦進入了一個目標,它就再也不會被觸摸 - 它只能被讀取。

回答

2

你有一對夫婦與查詢問題:

  1. 嵌套陣列中的對象的goalID元素的正確點字段名稱應該是「goals.goalID」 - 也就是說,除去前面的 「match.
  2. $gt正確的順序(和朋友:$gte$lt$lte)是field: {$operator: value},如:

    db.mycollection.find({"goals.goalID": {"$gt": 201}})

+0

太棒了!感謝您的解釋。它按照你的例子工作。 – Ciaran

相關問題