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

Barbara Streisand
リリース: 2024-10-30 06:35:27
オリジナル
719 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!