我有這樣一個在收集x
在MongoDB的文件:上述變換鍵映射到載體
{
"_id" : ...
"attrKeys": [ "A1", "A2" ],
"attrs" : {
"A1" : {
"type" : "T1",
"value" : "13"
},
"A2" : {
"type" : "T2",
"value" : "14"
}
}
}
的A1
和A2
元件都只是例子:attrs
字段可以保持任何數量的任何鍵名稱。 attrs
中的密鑰名稱存儲在attrNames
字段中。
我想使用MongoDB的聚合框架到文檔轉換成一個這樣的:
{
"_id" : ...
"attrs" : [
{
"key": "A1",
"type" : "T1",
"value" : "13"
},
{
"key": "A2",
"type" : "T2",
"value" : "14"
}
]
}
即,成爲attrs
到一個數組,其元素是相同的,所述密鑰值「通過「鍵入名稱爲key
的每個數組元素中的新字段。
可以使用聚合框架進行吸吮轉換嗎?我傾向於認爲$project
運營商可以使用,但我還沒有想出如何。
具有未知鍵是MongoDB中一種危險的反模式。 – Philipp
有點偏離主題,但我試圖澄清:)其實,關鍵是'attrs',它是完全已知的。另一個問題是我需要在'attrs'內使用密鑰來處理屬性的併發更新,例如'{$ set:{attrs.A1:{...}}}''和'{$ set:{attrs.A2:{...}}}'這可能非常難以管理將屬性存儲爲數組。 – fgalan
實際上,鍵並不完全未知,它們存儲在'attrKeys'字段中。我編輯了這個問題來包含這些信息(我沒有在我的原始文章中列入,認爲'attrKeys'不是有意解決這個問題,對此很抱歉)。 – fgalan