如果我有一組對象,每個對象具有相同的描述,但數量不同。在MongoDB中將不同的數量分組在一起
{
{
"_id": "101",
"description": "DD from my employer1",
"amount": 1000.33
},
{
"_id": "102",
"description": "DD from my employer1",
"amount": 1000.34
},
{
"_id": "103",
"description": "DD from my employer1",
"amount": 1000.35
},
{
"_id": "104",
"description": "DD from employer1",
"amount": 5000.00
},
{
"_id": "105",
"description": "DD from my employer2",
"amount": 2000.33
},
{
"_id": "106",
"description": "DD from my employer2",
"amount": 2000.33
},
{
"_id": "107",
"description": "DD from my employer2",
"amount": 2000.33
}
}
下面,我可以將它們組合使用說明:
{
{
"$group": {
"_id": {
"description": "$description"
},
"count": {
"$sum": 1
},
"_id": {
"$addToSet": "$_id"
}
}
},
{
"$match": {
"count": {
"$gte": 3
}
}
}
}
有沒有一種辦法,包括在小組(_ids所有金額:101,102和103以及105,106,107 )即使他們有一個小的差異,但排除獎金額,這在上面的示例是_id 104?
我不認爲它可以在小組階段完成,但是有什麼可以在稍後階段完成,可以將_id 101,102和103組合在一起並排除_id 104.基本上,我希望MongoDB忽略101,102,103中的小差異,並將它們組合在一起,因爲薪水來自同一僱主。
我一直在與$ stdDevPop,但不能得到一個固定的公式。
我正在尋找一個簡單的數組輸出的_ids。
{ 「結果」:[ 「101」, 「102」, 「103」, 「105」, 「106」, 「107」 ] }
您可以通過對「數量」進行一些數學分組,即舍入到1000,並將匹配的'_id'值推送到數組。 **然而**,目前您的「金額」值是「字符串」。因此,您要麼通過轉換爲數值來修復這些數據,要麼使用'mapReduce'的JavaScript評估。聚集框架運算符不能將字符串轉換爲數字。但JavaScript可以。不過,你「應該」真正修復你的數據。 –
值是數字。錯誤地顯示爲字符串。 –
@ NeilLunn謝謝。我使用$ trunc,然後按描述分組,並截斷值,它正在做我想做的事情。 –