我有一個帶有標籤子文檔的文檔集合。 用mongodb聚合查詢獲取子文檔中的同胞數量
{
title:"my title",
slug:"my-title",
tags:[
{tagname:'tag1', id:1},
{tagname:'tag2', id:2},
{tagname:'tag3', id:3}]
}
{
title:"my title2",
slug:"my-title2",
tags:[
{tagname:'tag1', id:1},
{tagname:'tag2', id:2}]
}
{
title:"my title3",
slug:"my-title3",
tags:[
{tagname:'tag1', id:1},
{tagname:'tag3', id:3}]
}
{
title:"my title4",
slug:"my-title4",
tags:[
{tagname:'tag1', id:1},
{tagname:'tag2', id:2},
{tagname:'tag3', id:3}]
}
[...]
獲取每一個標籤的計數與$開卷+組相當簡單算總
不過,我想尋找一種標籤的數被發現在一起,或者更確切地說,哪個兄弟姐妹通常在彼此旁邊出現,按伯爵排序。我還沒有找到一個例子,我也不知道如何做到這一點沒有多個查詢。
理想情況下,最終的結果將是:
{'tag1':{
'tag2':3, // tag1 and tag2 were found in a document together 3 times
'tag3':3, // tag1 and tag3 were found in a document together 3 times
[...]}}
{'tag2':{
'tag1':3, // tag2 and tag1 were found in a document together 3 times
'tag3':2, // tag2 and tag3 were found in a document together 2 times
[...]}}
{'tag3':{
'tag1':3, // tag3 and tag1 were found in a document together 3 times
'tag2':2, // tag3 and tag2 were found in a document together 2 times
[...]}}
[...]
我認爲你的意思是''標籤「:[{}]'因爲與你輸入的內容相比,這將是數組語法,這實際上不是有效的文檔結構。您不能使用聚合框架創建任意「關鍵名稱」。它也似乎不可能得到你想要的結果(或接近它),但我真的只是猜測,因爲你的問題缺乏一個明確的樣本,可能產生一個明確的預期結果。請參閱:[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve) – 2015-03-03 01:36:51
這只是簡化的非手工操作,原始文檔相當大,子文檔也非常大。 – tweak2 2015-03-03 01:57:48
看到你糾正了數組符號。不要求你提交整件事,只是樣本和實際可能從樣本數據中獲得(需要)的結果。它使你的問題比現在更清晰。 – 2015-03-03 02:07:44