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

MongoDBコレクション内のすべてのドキュメントに新しいフィールドを追加します

    既存のコレクションフィールドの更新と同じ、$set 指定されたフィールドが存在しない場合、新しいフィールドが追加されます。

    この例を確認してください:

    > db.foo.find()
    > db.foo.insert({"test":"a"})
    > db.foo.find()
    { "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
    > item = db.foo.findOne()
    { "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
    > db.foo.update({"_id" :ObjectId("4e93037bbf6f1dd3a0a9541a") },{$set : {"new_field":1}})
    > db.foo.find()
    { "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "new_field" : 1, "test" : "a" }
    

    編集:

    すべてのコレクションにnew_fieldを追加する場合は、空のセレクターを使用し、マルチフラグをtrue(最後のパラメーター)に設定してすべてのドキュメントを更新する必要があります

    db.your_collection.update(
      {},
      { $set: {"new_field": 1} },
      false,
      true
    )
    

    編集:

    上記の例では、最後の2つのフィールドfalse, true upsertを指定します およびmulti フラグ。

    アップサート: trueに設定すると、クエリ条件に一致するドキュメントがない場合に新しいドキュメントが作成されます。

    マルチ: trueに設定すると、クエリ条件を満たす複数のドキュメントが更新されます。 falseに設定すると、1つのドキュメントが更新されます。

    これはMongoのversions用です 2.2より前 。最新バージョンでは、クエリが少し変更されています

    db.your_collection.update({},
                              {$set : {"new_field":1}},
                              {upsert:false,
                              multi:true}) 
    


    1. インデックスを使用していないクエリやmongodbで遅いクエリを見つける方法

    2. F#複数の属性CLIMutable DataContract

    3. SpringBootアプリケーションでSpringSecurityとRedisを使用して現在認証されているユーザープリンシパルを取得するにはどうすればよいですか?

    4. ターミナルでルートパスワードなしでMySQLに接続する方法