Einfügen von Daten in MongoDB mit mgo
Ich versuche, fügen Sie einige Daten in MongoDB mit Gehen.
Hier ist die Daten-Struktur:
type Entry struct {
Id string `json:"id",bson:"_id,omitempty"`
ResourceId int `json:"resource_id,bson:"resource_id"`
Word string `json:"word",bson:"word"`
Meaning string `json:"meaning",bson:"meaning"`
Example string `json:"example",bson:"example"`
}
Dies ist meine Funktion einfügen:
func insertEntry(db *mgo.Session, entry *Entry) error {
c := db.DB(*mongoDB).C("entries")
count, err := c.Find(bson.M{"resourceid": entry.ResourceId}).Limit(1).Count()
if err != nil {
return err
}
if count > 0 {
return fmt.Errorf("resource %s already exists", entry.ResourceId)
}
return c.Insert(entry)
}
Und schließlich, das ist, wie ich es nennen:
entry := &Entry{
ResourceId: resourceId,
Word: word,
Meaning: meaning,
Example: example,
}
err = insertEntry(db, entry)
if err != nil {
log.Println("Could not save the entry to MongoDB:", err)
}
Das Problem ist, ich hatte erwartet, meine bson
- tags, um magisch zu arbeiten, aber Sie nicht.
Anstelle der Daten gespeichert:
{ "_id" : ObjectId("53700d9cd83e146623e6bfb4"), "resource_id" :
7660708, "word" : "Foo",...}
Es wird gespeichert als:
{ "_id" : ObjectId("53700d9cd83e146623e6bfb4"), "id" : "",
"resourceid" : 7660708, "word" : "Foo",...}
Wie kann ich dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eintrag ändern zu:
Die syntax für Struct-Tags verwenden, die nicht mit Kommata zwischen den tags. Ich glaube, dass dieses Problem beheben sollte.
Anstelle von Count() und Insert() können Sie UpsertId, die genau das tut, wenn eine Id vorhanden ist, wird der Datensatz ersetzt, wenn nicht ist es eingefügt.
Insert() mit einem leeren ObjectId können MongoDB handle-Id-Zuweisung.
Bearbeiten:
Falsch verstanden, Ihre Count-Abfrage.
Haben Sie auch einen Fehler drin.
Es sollte "resource_id" nicht "resourceid", weil Sie erklärt, dass die bson-Feld mit der Bezeichnung "resource_id"
insertEntry
Werke scheinen mag counter-intuitive, aber es macht Sinn, in der Art und Weise das Programm arbeitet.Aktualisieren Sie Ihren Eintrag struct als:
Sollte diese Arbeit!