Zgodnie z dokumentacją (http://godoc.org/launchpad.net/mgo/v2) można uzyskać identyfikator dokumentu "Upserted", jeśli użyto metody Upsert.Golang/mgo: Dlaczego mgo nie zwraca identyfikatora wstawionego dokumentu?
Istnieje również metoda Insert, która nie zapewnia tej funkcji.
Dlaczego tak jest? Co zrobić, jeśli chcę wykonać Insert zamiast Upsert? (lub nigdy nie byłby żaden ważny powód, aby chcieć to zrobić? Zaczynam się zastanawiać.)
Jak mógłbym zastąpić "foo": "bar" z struct już stworzył? – Acidic
"Jeśli aplikacja zostanie zrestartowana, generator Object Ideli rozpocznie od początku generowanie tych samych identyfikatorów, co spowoduje aktualizację istniejących rekordów w bazie danych." to jest zamieszczone na drugiej odpowiedzi, jest NAPRAWDĘ ważne i nie jest wymienione w odpowiedzi. Myślę, że powinieneś edytować odpowiedź dodającą te informacje dla osób w przyszłości. – cjf93
@ cjf93 To nie jest prawda (więcej?). Jeśli spojrzysz na implementację bson.ObjectId, zobaczysz, że bierze pod uwagę obecny czas. Zostało to również wyjaśnione tutaj: https://github.com/go-mgo/mgo/issues/392 –