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

MongoDB:配列フィールドのすべてのサブドキュメントからフィールドを削除する

    このエラーが発生する理由は、filter句に述語がないためです。これを行うことができます:

    mongos> db.test.update({"messages.id": {$exists: true}}, {$unset: {"messages.$.id":true}}, {multi:true})
    

    また、エラーは発生しません。実際、ドキュメントの1つにidが含まれています。 属性が削除されました。問題は、位置演算子が述語に一致する配列の最初の要素にのみ一致し、すべての要素に一致するわけではないことです。より大きな問題は、現在、MongoDBの配列内のすべての要素を更新できないことです( https ://jira.mongodb.org/browse/SERVER-1243

    数値位置( "messages.0.id"、 "messages.1.id"など)を使用して配列内の各要素を反復処理する必要があります。または、配列をアプリケーションにプルして、ループすることができます。要素を更新してから、配列を保存して戻します。

    JIRAチケットから、この問題はかなり前から公開されていることがわかりますが、10genはそれをそれほど優先度が高いとは考えていないようです。



    1. mongodbscalaドライバー-ドキュメントを取得できません

    2. Redisに保存されている値を参照/表示するにはどうすればよいですか?

    3. MongoDB:MongoDBに接続するresolv.confのDNSの問題

    4. クラスコンストラクターMongoStoreは、「new」(Express-NodeJs)Backendなしでは呼び出すことができません。