Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rufe ich MongoDB-Dokumente über ein Array von Objekt-IDs mit mgo und bson ab?

Wie rufe ich MongoDB-Dokumente über ein Array von Objekt-IDs mit mgo und bson ab?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 06:35:27709Durchsuche

How to Retrieve MongoDB Documents by an Array of Object IDs using mgo and bson?

Abrufen von MongoDB-Dokumenten nach Array von Objekt-IDs

In MongoDB ist es möglich, ein Array von Objekt-IDs (auch als _ids bezeichnet) zu speichern. innerhalb eines Dokuments. Um alle Dokumente, die diesen Objekt-IDs entsprechen, effizient abzurufen, verwenden Sie den Operator $in.

Frage:

Sie haben ein Array von hexadezimal codierten _ids:

ids := ["543d171c5b2c12420dd016", "543d171c5b2dd016"]

Wie rufen Sie die entsprechenden Dokumente mit mgo und bson ab?

Antwort:

Ihr erster Ansatz mit:

query := bson.M{"_id": bson.M{"$in": ids}}
c.Find(query).All()

ist falsch, da die _ids als Objekt-IDs und nicht als Zeichenfolgen gespeichert werden. Um Dokumente nach Objekt-IDs abzurufen, müssen Sie die hexadezimal codierten Zeichenfolgen in bson.ObjectId-Objekte konvertieren:

oids := make([]bson.ObjectId, len(ids))
for i := range ids {
  oids[i] = bson.ObjectIdHex(ids[i])
}

query := bson.M{"_id": bson.M{"$in": oids}}
c.Find(query).All()

Dieser Code:

  1. Erstellt ein Segment von bson.ObjectId Objekte.
  2. Durchläuft die hexadezimal codierten _id-Strings und konvertiert sie mithilfe der bson.ObjectIdHex-Funktion in eine Objekt-ID.
  3. Erstellt eine Abfrage, bei der das _id-Feld mit einer der bereitgestellten Objekt-IDs übereinstimmt .
  4. Verwendet die Methoden „Suchen“ und „Alle“, um alle übereinstimmenden Dokumente aus der MongoDB-Sammlung abzurufen.

Das obige ist der detaillierte Inhalt vonWie rufe ich MongoDB-Dokumente über ein Array von Objekt-IDs mit mgo und bson ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn