2011-02-08 6 views
99

MongoDBコンソールで、idでレコードを削除する方法はありますか?ここに私のコレクションです:MongoDBコンソールで_idで削除

[ 
    { 
    "_id" : { "$oid" : "4d512b45cc9374271b02ec4f" }, 
    "name" : "Gazza" 
    }, 
    { 
    "_id" : { "$oid" : "4d513345cc9374271b02ec6c" }, 
    "name" : "Dave", 
    "adminOf" : { }, 
    "email" : "[email protected]" 
    } 
] 

そして、ここでは動作しません。私が試したコマンドです:名前によって削除

db.test_users.remove({"_id":{"$oid":new ObjectId("4d512b45cc9374271b02ec4f")}}); 
db.test_users.remove({"_id":{"$oid":"4d513345cc9374271b02ec6c"}}); 
db.test_users.remove({"_id":"4d512b45cc9374271b02ec4f"}); 
db.test_users.remove({"_id":new ObjectId("4d512b45cc9374271b02ec4f")}); 

は動作します:

db.test_users.remove({"name":"Gazza"}); 

これがブラウザでありますshell on on mongodb.orgこれは違いがある場合

ありがとう

+1

あなたは誰かに答えを与えることを考えるべきです。 – nottinhill

+1

あなたは本当に誰かに答えを与えるべきです。私はNic Cottrellを提案したいと思います –

+0

コールバックを追加するまで、解決策はありませんでした:db.test_users.remove({"_id": '4d512b45cc9374271b02ec4f'}、function(err、data){}); – rttmax

答えて

11

まあ、_idはあなたの例ではオブジェクトなので、あなただけのこれは

編集]を動作するはずのオブジェクトに

'db.test_users.remove({"_id": { "$oid" : "4d513345cc9374271b02ec6c" }})' 

に合格する必要があります:それはコンパイルされていることを保証するために括弧末尾に追加しました。

+0

私はそれもレコードを削除していないことを試みた:db.test_users.remove({"_id":{"$ oid": "4d513345cc9374271b02ec6c"}}); ps:これを示す質問を更新しました –

+0

あなたの質問では、これを試してみました:db.test_users.remove({"_id":{"$ oid":new ObjectId( "4d512b45cc9374271b02ec4f")}}); – Dmitri

+0

はい私は今質問を更新しました。ありがとうございました。これは、サブプロパティで削除できないためかもしれません。 –

15

答えは、mongodb.orgのウェブコンソール/シェルが異なる動作をしていて、期待した通りではないということです。自宅のインストールされたバージョンは問題なく完全に動作しました。

"_id" : ObjectId("4d5192665777000000005490") 

クエリは問題なく後者に対して働いた:自宅で同じ文書のセットアップおよび自動_idは、このように保存された生成

"_id" : { "$oid" : "4d512b45cc9374271b02ec4f" }, 

:自動ウェブシェルに_idを生成し、このように保存されました。

+0

BSONの文書に別に保存されていますか?これらの相違点は、クライアントが出力を異なる形式でフォーマットしているように見えます。 –

4

私は自分自身がこのぶつかってきたし、この変化は、私の仕事:

db.foo.remove({**_id**: new ObjectId("4f872685a64eed5a980ca536")}) 
202

非常に近いです。これは動作します:

db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")}); 

を、すなわちあなたがのObjectIdのため新しいを必要としません。

+4

それはまた、_idの周りの引用符なしで動作します db.test_users.remove({_id:ObjectId( "4d512b45cc9374271b02ec4f")}); – alfonsodev

+0

私はこれを試しました: TimeAndSpace.remove({"_id":ObjectId( "8Bd2dZ778LXejYNrL")}); ... "Uncaught ReferenceError:ObjectIdが定義されていません を:2:13" –

+0

@BclayオブジェクトIDは16進数の入力を期待しています(小文字かもしれません)ので、X、Z文字に間違いがあります。 –

15

私は試しました。これは私のためにうまくいきます。

db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")}); 
+6

@Nic Cottrellの回答とは何が違うのですか? – Sadikhasan

1

ソリューションと例:

の1- C:\ MongoDBの\サーバー3.2 \ binに\> Mongoの(あなたがまだデータベースに接続されていないため、まだコマンドを発行していない、あなただけに接続されていますデータベースサーバmongodb)。

2-

show dbs analytics_database 0.000GB local 0.000GB test_database 0.000GB

3-

use test_database switched to db test_database

4-

db.Collection.remove({"_id": ObjectId("5694a3590f6d451c1500002e")}, 1); WriteResult({ "nRemoved" : 1 })

今はWriteResult({ "nRemoved":1})を参照1 0でありません。

完了。

6

IDのリストで削除したい場合は、これがうまくいきます。

db.CollectionName.remove({ 
    "_id": { 
     $in: [ 
      ObjectId("0930292929292929292929"), 
      ObjectId("0920292929292929292929") 
     ] 
    } 
}) 
3

最初のMongoDB のObjectId =必要とする(MongoDBの).ObjectIDからのObjectID関数を得ます。あなたはレプリカセット内の複数のMongoDBのノードを持っていますかのObjectId( "4d5192665777000000005490")

1

:あなたは "_id" 削除機能を

を_idを

を呼び出すことができますか?

私が見つけた、正しい削除構文こと(私はRobomongoのGUIのmongoシェルを経由して使用していますが、私は同じことが他のケースに当てはまると思います)すなわち

db.test_users.remove({"_id": ObjectId("4d512b45cc9374271b02ec4f")}) 

...あなたがに接続されていない限り動作しません。 レプリカセットのノード。

関連する問題