sql >> データベース >  >> NoSQL >> MongoDB

存在する場合は配列内の要素を更新し、そうでない場合はMongoDbのその配列に新しい要素を挿入します

    $addToSetを使用します $pushの代わりに 。

    db.push.update(
        { _id: 5 },
        { $addToSet: { "quizzes": {"wk": 6.0, "score": 8.0}, "play": {"wk": 6.0, "score": 8.0} } }
    )
    

    編集:

    特定のプロパティによる、配列フィールドの条件付きサブドキュメント更新のための単純な組み込みアプローチはありません。ただし、2つのコマンドを順番に実行することで、小さなトリックで作業を行うことができます。

    例:quizzesを更新する場合 オブジェクトのあるフィールド{ "wk": 7.0, "score": 8.0 } 、2つのステップで実行できます:

    ステップ1: $pull quizzesからサブドキュメントを取り出します "wk": 7.0の配列 。 (一致するサブドキュメントが見つからない場合は何も起こりません

    db.push.update(
        { _id: 5 },
        { $pull: { "quizzes": { "wk": 7.0 } } }
    )
    

    ステップ2: $addToSet サブドキュメント。

    db.push.update(
        { _id: 5 },
        { $addToSet: { "quizzes": {"wk": 7.0, "score": 8.0} } }
    )
    

    bulk.find().update()を使用して、上記の2つの更新コマンドを組み合わせることができます。



    1. sidekiqがredisサーバーに接続されているかどうかを確認するにはどうすればよいですか?

    2. MongoDB:配列フィールドに要素が含まれているかどうかを確認するにはどうすればよいですか?

    3. Redisデータ構造の概要:ソートされたセット

    4. マングーススキーマ参照と未定義のタイプ'ObjectID'