ホームページ > バックエンド開発 > Golang > オブジェクト配列の値が存在するかどうかを確認する

オブジェクト配列の値が存在するかどうかを確認する

WBOY
リリース: 2024-02-10 13:30:21
転載
1118 人が閲覧しました

检查对象数组中的值是否存在 golang

#phpエディタBaicaoは、この記事でgolangでオブジェクト配列の値が存在するかどうかを確認する方法を紹介します。開発の過程では配列を操作したり判定したりすることが多く、場合によってはオブジェクトの配列に特定の値が存在するかどうかを確認する必要があります。このプロセスには、配列の走査、値の比較などが含まれる場合があります。以下では、この関数の実装方法を段階的に紹介します。

質問内容

mongoデータベースに追加する前に新しい値が存在するかどうかを確認しようとしているのですが、毎回エラーが発生します。

リーリー

私のドキュメントは次のようになります

リーリー

.... }

さまざまな状態が存在するため、新しい値でデータベースを更新する前に、同じ状態がデータベースに複数回送信されないようにしたいと考えています。

リーリー

utils.todoc

リーリー

アップデートしてみる

リーリー

エラーを返す

obid, _ := primitive.objectidfromhex(id)
        query := bson.d{{key: "_id", value: obid}}
    
        var result bson.m
        er := r.collection.findone(ctx, bson.m{"_id": obid, "statusdata.status": bson.m{"$in": []string{string(p.status)}}}).decode(&result)
        if er != nil {
            if er == mongo.errnodocuments {
                return nil, errors.new(fmt.sprintf("err na  %v, %v", er.error(), p.status))
            }
            return nil, errors.new(fmt.sprintf("err norr  %v", er.error()))
        }

doc, err := utils.todoc(p)
    if err != nil {
        return nil, errors.new(err.error())
    }

    update := bson.d{{key: "$set", value: doc}}
    res := r.collection.findoneandupdate(ctx, query, update, options.findoneandupdate().setreturndocument(1))
ログイン後にコピー

回避策

フィルターを使用して、追加したいステータスを持つドキュメントを除外します。ステータスがすでに配列に存在する場合、このフィルターはどのドキュメントとも一致しません。更新操作は、状態がまだ追加されていない場合にのみ実行されます:

リーリー

以上がオブジェクト配列の値が存在するかどうかを確認するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート