ホームページ  >  記事  >  バックエンド開発  >  mgo と bson を使用してオブジェクト ID の配列によって MongoDB ドキュメントを取得するにはどうすればよいですか?

mgo と bson を使用してオブジェクト ID の配列によって MongoDB ドキュメントを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 06:35:27709ブラウズ

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

オブジェクト ID の配列による MongoDB ドキュメントの取得

MongoDB では、オブジェクト ID (_id とも呼ばれる) の配列を保存できます。文書内で。これらのオブジェクト ID に対応するすべてのドキュメントを効率的に取得するには、$in 演算子を使用します。

質問:

16 進数でエンコードされた _id の配列があります:

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

mgo と bson を使用して対応するドキュメントを取得するにはどうすればよいですか?

答え:

最初のアプローチは次のとおりです:

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

は、_id が文字列ではなくオブジェクト ID として保存されるため、不正確です。オブジェクト ID によってドキュメントを取得するには、16 進数でエンコードされた文字列を bson.ObjectId オブジェクトに変換する必要があります:

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()

このコード:

  1. bson.ObjectId のスライスを作成します。
  2. 16 進数でエンコードされた _id 文字列を反復処理し、bson.ObjectIdHex 関数を使用してそれぞれをオブジェクト ID に変換します。
  3. _id フィールドが指定されたオブジェクト ID のいずれかと一致するクエリを構築します.
  4. Find メソッドと All メソッドを使用して、MongoDB コレクションから一致するすべてのドキュメントを取得します。

以上がmgo と bson を使用してオブジェクト ID の配列によって MongoDB ドキュメントを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。