2016-08-30 4 views
2

私は新しいプロジェクトのためにmongoDBを学んでいます。私が頂いたコレクションを作成したが、私は以下の通りですMongoDBの中に頂いたコレクションからドキュメントを削除しようとしている間、私はエラーを取得しています、mongoDBのcappedコレクションからドキュメントを削除すると、エラーが発生しますか?

db.mycol.remove({「_ ID」:のObjectId(「57bef716e5ff2cbb540e403b」) })

WriteResult({ "nRemoved":0、 "writeError":{ "コード":20、 "ERRMSG": : "mytestdb.myc オールキャップされたコレクションから削除することはできません"} })

これから私を助けてください。

ありがとうございます!

+1

おそらく重複http://stackoverflow.com/q/33048282/3081659 – Noman

答えて

1

キャップされたコレクションは、removeのドキュメントをサポートしておらず、キャップド・ユースケースでパフォーマンスを向上させるために、他のほとんどがありません。restrictions

キャッピングされたコレクションからドキュメントを削除することはできません。 、コレクションからすべての ドキュメントを削除ドキュメントを見てみましょう コレクション

+0

@DhruvPathakありがとうございました。これは、削除操作や更新操作を実行すると、コレクションを宣言したことはありませんか? –

+0

はい、正しいです。 – DhruvPathak

1

を廃棄するには、drop()メソッドを使用するには:

「あなたはAから文書を削除することはできません文書削除

をコレクションからすべてのドキュメントを削除するには、drop()メソッドを使用してコレクションを削除し、そのコレクションを再作成してください。

つまり、コレクション全体を削除してから再作成する必要があります。 https://docs.mongodb.com/manual/core/capped-collections/

+0

@貴重なご意見ありがとうございます。 –

0

原因:コレクションには上限が設定されています。この操作は実行できません。詳細:Restrictions

追加、あなたのコレクションがキャップされていることを確認しますか?コマンドによる

db.mycol.isCapped() 

は、コマンドによって、あなたのMongoDBのバージョンを確認:

db.version() 

[解決] は、新しいコレクションの蓋をして、すべてのドキュメントをコピーしないを作成します。

コピーしてコレクション名を置き換え、端末に貼り付けます。

// replace <mycol> by <your collections name> 
db.createCollection("mycol_temp") 
var cur = db.mycol.find() 
while (cur.hasNext()) { 
    mycol = cur.next(); 
    db.mycol_temp.insert(logItem); 

} db.mycol.drop() db.mycol_temp.renameCollection( "mycol")次に

、更新()または削除()文書が受け入れられます。

P/s:申し訳ありませんが、英語は母国語ではありません。 ^^!