2011-02-08 28 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"}); 

這是在瀏覽器外殼在mongodb.org如果這有什麼區別

謝謝

+1

你應該考慮給別人答案。 – nottinhill 2014-08-22 14:32:50

+1

你真的應該給別人答案。我建議Nic Cottrell – 2015-06-03 22:05:06

+0

沒有任何解決方案爲我工作,直到我添加了一個回調:db.test_users.remove({「_id」:'4d512b45cc9374271b02ec4f'},function(err,data){}); – rttmax 2016-06-13 14:45:56

回答

11

嗯,_id是你的榜樣的對象,所以你只需要傳遞一個對象

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

這應該工作

編輯:添加尾隨括號,以確保其編譯。

+0

我也試過,它並沒有刪除記錄:db.test_users.remove({「_id」:{「$ oid」:「4d513345cc9374271b02ec6c」}}); ps:更新了這個問題來顯示這個 – 2011-02-08 12:41:21

+0

在你的問題中,你說過你試過這個:db.test_users.remove({「_id」:{「$ oid」:new ObjectId(「4d512b45cc9374271b02ec4f」)}}); – Dmitri 2011-02-08 12:42:48

15

答案是mongodb.org上的Web控制檯/ shell的行爲有所不同,並不像我預期的那樣。在家裏安裝的版本完美無缺地工作,即;自動生成的_id在網絡上殼保存這樣的:

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

同一文件安裝在家裏,自動生成的_id保存這樣的:

"_id" : ObjectId("4d5192665777000000005490") 

查詢工作對後者沒有任何問題。

4

我只是碰到了這個自己這種變化爲我工作:

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

非常接近。這將工作:

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

即不需要對一個的ObjectId新

15

我試過了。這對我來說工作得很好。

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

解決方案和示例:

1 C:\ MongoDB的\服務器\ 3.2 \ BIN>蒙戈(不要因爲你沒有連接到任何數據庫尚未發出命令的是,你只連接到數據庫服務器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 })

現在你看到寫結果({ 「nRemoved」:1})是1不是0。

完成。

6

如果你想刪除一個ID列表,這很好的作品。

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

第一獲取從mongodb的 的ObjectId =需要(mongodb的).ObjectID所述的ObjectID功能;

,那麼你可以調用_id與刪除功能

「_id」:物件( 「4d5192665777000000005490」)

1

你已經在多個副本的mongodb節點設置?

我發現(我通過Robomongo GUI蒙戈外殼採用,我想同樣適用在其他情況下)正確刪除的語法,即

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

...不行,除非你連接到主副本副本集的節點。