2014-01-29 212 views
0
使用金額

我學習蒙戈和我有下面這個模式,我想一些幫助定義查詢:在蒙戈

我想獲得匹配這個代碼的「entregado」字段的總和: 151001.在這種情況下,我會得到這個結果= 38.

我是否需要更改模式或很容易得到我想要的查詢?

{ 
    "_id": 101, 
    "torre": 1, 
    "standard": { 
    "mamposteria": [ 
     { 
     "codigo": 311017, 
     "descripcion": "LADRILLO ARCILLA H-10", 
     "cantidad": 1080, 
     "um": "UN", 
     "entregado": 1080, 
     "fecha": new Date('June 10, 2013'), 
     "vale": [1322] 
     }, 
     { 
     "codigo": 311021, 
     "descripcion": "LADRILLO ARCILLA H-7", 
     "cantidad": 200, 
     "um": "UN", 
     "entregado": 200, 
     "fecha": new Date('June 10, 2013'), 
     "vale": [1322] 
     }, 
    { 
     "codigo": 151001, 
     "descripcion": "CEMENTO GRIS 50 KG", 
     "cantidad": 17, 
     "um": "KG", 
     "entregado": 17, 
     "fecha": new Date('June 10, 2013'), 
     "vale": [1322] 
     }        
    ], 
    "mortero": [ 
     // . . . 
    ], 
    "estructura":[ 
     // . . . 
    ] 
    } 
} 
+1

這可以使用聚合框架來完成。你有很多子文檔 - 不管你提供的信息是否改變你的模式都不是一個容易回答的問題。這都是特定應用程序/使用情況。如果您要求的聚合查詢是您的應用將發送到數據庫的主要查詢,那麼我很可能會嘗試更改它。請閱讀關於聚合的更多信息,並嘗試自行完成一些操作:http://docs.mongodb.org/manual/aggregation/。數據建模也是一個很好的解讀:http://docs.mongodb.org/manual/core/data-modeling-introduction/ –

回答

0

要單獨計算你不需要修改你的模式。

只需按照下面的步驟可以給你什麼ü需要的數量。我不會給你整個查詢來查找計數。這使得ülazy..so會給步驟獲得的個性化......

1) use $unwind 2) use $match to find the value for code: 151001 3) use $group to $sum the values present in entregado 

這應該給你計數。

如果您需要任何其他幫助請與我聯繫我會幫助