2017-10-11 14 views
1

Ich verwende den Listendatentyp (http://www.aerospike.com/docs/guide/cdt-list.html ) in aerospike mit einem Golang-Client. Ich kann das ListInsertOp (https://godoc.org/github.com/aerospike/aerospike-client-go#ListInsertOp) verwenden, um Werte in der Liste eines bestimmten Eintrags einzufügen.Wie durchläuft man die Liste in Aerospike mit Golang?

Allerdings möchte ich einen bestimmten Listenwert mit der ListSetOp (https://godoc.org/github.com/aerospike/aerospike-client-go#ListSetOp) oder ListRemoveOp (https://godoc.org/github.com/aerospike/aerospike-client-go#ListRemoveOp)

Um aktualisieren/zu löschen, dies zu tun, ich brauche einen Index. Wie kann ich diesen Index bekommen? Gibt es eine Möglichkeit, ich kann durch alle Listenwerte iterieren und den Index holen und dann den Update- oder Löschvorgang durchführen?

Antwort

2

Angenommen, Sie haben die Liste List. Lassen Sie uns sagen Sie Element value mit newItem genannt ersetzen möchten, können Sie wie tun:

... 

for index, item := range List { 
    if item == value { 
      List[index] = newItem 
    } 
} 

... 

In dem obigen Code-Schnipsel, index ist der Index, an dem Element item vorhanden ist. Auf diese Weise können Sie auch das Element ersetzen, das auf dem jeweiligen Index in der Liste vorhanden ist, mit value.

Musterbeispiel im Spielplatz: https://play.golang.org/p/qOmsY9fbL2

+0

Die Frage ist nicht zum Ersetzen eines Elements in einer Scheibe in Go. Die Idee hinter 'ListSetOp' besteht darin, ein einzelnes Element in der Liste zu ersetzen, ohne die gesamte Liste zurückzuschreiben. –

1

Wie üblich Elemente in der Liste werden durch ihre ganzzahligen Position ausgehend von Null indiziert. Aerospike unterstützt auch negative Indizierung, um vom Ende der Liste rückwärts zu starten.

Lists documentation in the Aerospike:

Elemente werden durch ganzzahlige Position angeordnet.

Lists documentation in the Aerospike's Node.js client:

Listenoperationen unterstützen negative Indizierung. Wenn der Index negativ ist, beginnt der aufgelöste Index rückwärts vom Ende der Liste.

Index/Range Beispiele:

  • Index 0: Erster Eintrag in der Liste.
  • Index 4: Fünfter Punkt in der Liste.
  • Index -1: Letzter Eintrag in der Liste.
  • Index -3: Vorletzter Eintrag in der Liste.

Auch in Go client source erwähnt.

list := []string{“a”, “b”, “c”, “d”, “e”} 
bin := aerospike.NewBin("listbin", list) 
err := client.PutBins(nil, key, bin) 

// to replace “d”: 
op := aerospike.ListSetOp(bin.Name, 3, "replaced") 
_, err = client.Operate(nil, key, op) 
Verwandte Themen