[解決済み] mongoDbで、配列の要素をインデックスで削除するにはどうしたらいいですか?
2022-12-02 07:17:54
質問
次の例では、ドキュメントが db.people コレクションにあるとします。
の3番目の要素を削除する方法 興味 配列の3番目の要素を インデックス ?
{
"_id" : ObjectId("4d1cb5de451600000000497a"),
"name" : "dannie",
"interests" : [
"guitar",
"programming",
"gadgets",
"reading"
]
}
これは私の現在の解決策です。
var interests = db.people.findOne({"name":"dannie"}).interests;
interests.splice(2,1)
db.people.update({"name":"dannie"}, {"$set" : {"interests" : interests}});
もっと直接的な方法はないのでしょうか?
どのように解決するのですか?
配列のインデックスを指定して引いたり外したりするストレートな方法はありません。実際、これは未解決の問題です。 http://jira.mongodb.org/browse/SERVER-1014 で、投票することができます。
回避策としては、$unsetを使用してから$pullを使用します。
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
更新: いくつかのコメントで言及されたように、このアプローチはアトミックではなく、他のクライアントが2つの操作の間に読み取りや書き込みを行うと、いくつかのレースコンディションを引き起こす可能性があります。操作をアトミックにする必要がある場合は、可能です。
- データベースからドキュメントを読み取る
- ドキュメントを更新し、配列内の項目を削除する
- データベース内のドキュメントを置き換えます。ドキュメントを読み込んでから変更されていないことを確認するには、 update if current パターンで記述された で説明されている
関連
-
[解決済み】MongoDBデータベースの名前を変更する方法とは?
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
[解決済み] mongodの書き込みに関するデフォルトの懸念はどのバージョンにありますか?
-
[解決済み] MongoDBと同等ではない
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] mongodbの最後のN個のレコードを取得する方法は?
-
[解決済み】MongoDB: 1つのフィールドですべてのドキュメントを更新する
-
[解決済み】2つの異なるコレクションで重複したMongo ObjectIdが生成される可能性?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Mongo Restart Error -- /var/run/mongodb/mongod.pid が存在する
-
[解決済み] ネストされた配列の中で、マッチしたサブドキュメントの要素のみを返す
-
[解決済み] MongoDBと同等ではない
-
[解決済み] or' 条件を含む MongoDB クエリ
-
[解決済み】データベースとしてのNoSQL(MongoDB) vs Lucene(またはSolr)【クローズド
-
[解決済み】MongoDBで、あるデータベースから別のデータベースにコレクションをコピーする方法
-
[解決済み】MongoDB: 1つのフィールドですべてのドキュメントを更新する
-
[解決済み】MongoDBをWindowsサービスとして実行するにはどうすればいいですか?
-
[解決済み] mongo グループクエリ フィールドを保持する方法
-
[解決済み] MongoDBでサブドキュメントの配列をフィルタリングする方法 [重複] (英語)