MongoDB dynamische Attribute



  • Hallo,

    kann ich in mongo dynamische attribute speichern, die ich auswerten kann?

    zb.

    Feld1: [{ a:1, b:2 }, ... ]
    Feld2: [{ a:2,c:3 }, ... ]
    Feld3: [{ b:2,c:1 }, ... ]

    Und was ich jetzt haben will ist:

    Bilde den Durschnitt aller vorhandenen Daten in Feld1.

    Also das Problem: wenn der schlüssel bekannt ist, kann man ja einfach über $avg den Durschnitt bilden. Wie kann man das aber mit schlüsseln die vorher nicht bekannt sind, weil sie dynamisch sind?



  • als Ergebnis hätte ich gern

    AVG_Field1: {a:1.2131, b:1.532 }



  • Ich bin mir nicht sicher was du willst - verstehe deine Beschreibung nicht ganz.

    Vielleicht kannst du aber einfach ein zusätzliches Feld verwenden in dem du den Attribut-Namen speicherst statt dynamische Keys zu verwenden...?
    Das müsste sich mit "$group" immer noch relativ elegant abfragen lassen.



  • sry wegen der beschreibung^^

    aber was ich eigentlich vorhab:

    ich möchte die belegungsinfos von allen partitionen auf nem server minütlich speichern. da jeder server unterschiedliche partitionen hat, kann ich also nicht wirklich sagen welche "schlüssel" (paritionen) gespeichert werden.

    das resultat was ich haben will ist dann der durchschnitt aller partionen... aber das problem ist ja dass ich nicht weiß wie diese heißen



  • also ganz schlicht:

    Server1: Partition "a": 30.45gb, Partition "b": 15.24gb

    aber diese partitionen heißen ja auf jedem server anders zb /data oder /backup

    das problem: ist es nicht klar wie viele partitionen vorhanden sind... ich möchte aber für JEDE dieser paritionen den durchschnitt



  • Dann mach Objekte mit den Feldern "name" und "free space" (oder "used space" bzw. was du halt wissen willst).

    Also statt
    Server1: { a:1, b:2 }
    speicherst du
    `Server1_a: { name:a, free:1 }

    Server1_b: { name:b, free:2 }

    `

    Weiss nicht ob das "the way of doing it" bei NoSQL ist, aber es müsste auf jeden Fall funktionieren.


Anmelden zum Antworten