我對MongoDB的聚合框架非常陌生,所以我不知道如何做到這一點。MongoDB聚合但不包括某些項目
我有一個結構類似這樣的數據模型:
{
name: String,
store: {
item1: Number,
item2: Number,
item3: Number,
item4: Number,
},
createdAt: Date
}
我要回報每一位item'i平均價格」。我試着用這個查詢:
db.commerces.aggregate([
{
$group: {
_id: "",
item1Avg: { $avg: "$store.item1"},
item2Avg: { $avg: "$store.item2"},
item3Avg: { $avg: "$store.item3"},
item4Avg: { $avg: "$store.item4"}
}
}
]);
問題是,當一個項目沒有設置價格時,它以「-1」的形式存儲在數據庫中。
我不希望這些值污染平均結果。是否有任何方法來限制集合,只考慮當價格> 0時。
$match
運營商之前$group
不是一個解決方案,因爲我想返回所有的平均價格。
謝謝!
編輯:在這裏,你必須輸入&期望輸出的一個例子:
[{
name: 'name',
store: {
item1: 10,
item2: -1,
item3: 12,
item4: 3,
}
},
{
name: 'name2',
store: {
item1: 10,
item2: -1,
item3: -1,
item4: 2,
}
},...]
的期望輸出:
{
item1Avg: 10,
item2Avg: 0,
item3Avg: 12,
item4Avg: 2.5
}
你能告訴與預期結果的有效證件? – styvane
使用$ redact操作。 – ZeMoon
文檔模式是不夠的。請發佈示例有效的JSON文檔 – Saleem