Wie finden Sie die id in golang und mongodb
Brauche ich Werte mit ObjectIdHex und aktualisieren und auch das Ergebnis angezeigt. Ich bin mit mongodb und golang.Aber der folgende code funktioniert nicht wie erwartet
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type Person struct {
Id bson.ObjectId `json:"id" bson:"_id,omitempty"`
Name string
Phone string
}
func checkError(err error) {
if err != nil {
panic(err)
}
}
const (
DB_NAME = "gotest"
DB_COLLECTION = "pepole_new1"
)
func main() {
session, err := mgo.Dial("localhost")
checkError(err)
defer session.Close()
session.SetMode(mgo.Monotonic, true)
c := session.DB(DB_NAME).C(DB_COLLECTION)
err = c.DropCollection()
checkError(err)
ale := Person{Name:"Ale", Phone:"555-5555"}
cla := Person{Name:"Cla", Phone:"555-1234-2222"}
kasaun := Person{Name:"kasaun", Phone:"533-12554-2222"}
chamila := Person{Name:"chamila", Phone:"533-545-6784"}
fmt.Println("Inserting")
err = c.Insert(&ale, &cla, &kasaun, &chamila)
checkError(err)
fmt.Println("findbyID")
var resultsID []Person
//err = c.FindId(bson.ObjectIdHex("56bdd27ecfa93bfe3d35047d")).One(&resultsID)
err = c.FindId(bson.M{"Id": bson.ObjectIdHex("56bdd27ecfa93bfe3d35047d")}).One(&resultsID)
checkError(err)
if err != nil {
panic(err)
}
fmt.Println("Phone:", resultsID)
fmt.Println("Queryingall")
var results []Person
err = c.Find(nil).All(&results)
if err != nil {
panic(err)
}
fmt.Println("Results All: ", results)
}
FindId(bson.M{"Id": bson.ObjectIdHex("56bdd27ecfa93bfe3d35047d")}).One(&resultsID)
hat nicht funktioniert für mich und gibt mir folgende Ausgabe
Inserting
Queryingall
Results All: [{ObjectIdHex("56bddee2cfa93bfe3d3504a1") Ale 555-5555} {ObjectIdHex("56bddee2cfa93bfe3d3504a2") Cla 555-1234-2222} {ObjectIdHex("56bddee2cfa93bfe3d3504a3") kasaun 533-12554-2222} {ObjectIdHex("56bddee2cfa93bfe3d3504a4") chamila 533-545-6784}]
findbyID
panic: not found
goroutine 1 [running]:
main.checkError(0x7f33d524b000, 0xc8200689b0)
Wie kann ich dieses problem beheben? ich brauche bekommen Wert mittels oid und aktualisieren auch wie kann ich tun, dass
- löschen Sie die Datensätze neu einfügen und dann mit einem hart codierten id. Wenn Sie einen Datensatz einfügen, es wird eine zufällige id zugewiesen. Es wird anders werden in jedem Lauf. Ihre hardcoded id nicht funktionieren kann
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es
_id
nichtId
:Collection.FindId()
und dann übergeben Sie nur den id-Wert, oder verwenden SieCollection.Find()
und dann haben Sie einen Wert festlegen, der mit dem Feld-Namen zu. Siehe diese Antwort: Finden Sie, die von id mit mgo.Verwenden Sie können das gleiche tun mit golang offiziellen Treiber wie folgt