2017-09-13 28 views
0

我有一個包含以下數據MongoDB的文件(XXX)選擇之列用的MongoDB和Laravel

{ 
    "_id" : "48e5f6b1-026f-48b8-98cb-6572cfa0eaa6", 
    "esti_delivery_time" : "2015-1-1", 
    "original_price" : NumberInt(4060), 
    "price":109.2, 
    "code" : "JS1709137", 
    "updated_at" : ISODate("2017-09-13T06:01:18.000+0000"), 
    "created_at" : ISODate("2017-09-13T03:45:54.000+0000") 
} 

我想

SELECT "xxx" with SUM "price" and SUM "original_price" 
+0

你有什麼期望的輸出是什麼XXX – Shibon

+1

元話題[代碼翻譯標記](https://meta.stackoverflow.com/questions/265825/code-translation-tagging)。這些問題實際上非常偏離主題,沒有顯示出一些嘗試。 –

+0

@Zach不要忘了標記答案或添加你的,如果沒有正確的答案。這個問題可能對未來的其他人有用。 – Neodan

回答

0

因爲你需要的priceoriginal_price元素之和,這意味着您需要通過一些數據(一個或多個元素)對文檔進行分組。對於此任務,您需要使用$group aggregator

MongoDB PHP Driver documentation

例子:

$con = new MongoDB\Client('mongodb://localhost:27017', [], [ 
    'typeMap' => [ 
     'root'  => 'array', 
     'document' => 'array', 
     'array' => 'array' 
    ] 
]); 
$collection = $con->selectDatabase("db_name")->selectCollection("collection_name"); 

$cursor = $collection->aggregate([ 
    [ 
     '$group' => [ 
      "_id" => '$code', 
      "sum_price" => ['$sum' => '$price'], 
      "sum_original_price" => ['$sum' => '$original_price'] 
     ] 
    ] 
]); 
+0

非常感謝 – Zach