2013-05-04 47 views
0

我是新來的MongoDB,所以我意識到這是一個非常簡單的問題,但我到處找,我找不到答案?基本上我試圖找到包含單詞「刪除」的集合中的所有記錄並刪除它們。爲了得到記錄,我使用如何刪除在MongoDB中使用「distinct」找到的記錄?

db.collection.distinct("delete") 

(糾正我,如果我錯了)。但我怎麼去實際刪除這些?我試圖創造出一個變量(即

var query = db.collection.distinct("delete") 

),然後執行

db.collection.remove(query) 

但記錄仍然存在?任何幫助將是偉大的!

+0

刪除任何字段?你想要什麼語言在shell中? – Drew 2013-05-04 19:06:43

回答

2

假設你正在試圖刪除包含一個delete領域的所有文檔的每個文檔:

db.collection.remove({delete: {$exists: true}}); 
+0

啊,好的。這是完成同樣事情的更簡潔的方法。謝謝! – hayleyelisa 2013-05-04 19:19:47

1
var query = db.collection.distinct("delete") 
db.collection.remove({ delete : {$in : query} }) 

注意:它會刪除其刪除鍵

+0

這正是我所需要的。謝謝! – hayleyelisa 2013-05-04 19:12:08

+0

無法正常工作。嗯不適用於字段名稱或值 – Drew 2013-05-04 19:14:30

0

如果你提供一些文檔樣本,你會得到的答案可以更具體和準確。

這裏可能會出現混淆。你說'包含單詞刪除'的文件'。問題是「刪除」一詞出現在哪個字段?

您發出的distinct()命令向您返回來自名爲「delete」的字段的不同值,而不是某些字段值中出現單詞「delete」的文檔的ID。

舉例來說,如果你有一個記錄

{_id:1, x:"delete"} 
{_id:2,delete:true} 
{_id:3,delete:null} 
{_id:4,delete:false} 
{_id:5, x:"leave alone"} 

你會刪除第一個文件與

db.foo.remove({x:"delete"}) 

你會刪除第二個紀錄

db.foo.remove({delete:true}) 

應刪除記錄2,3,4與

db.foo.remove({delete:{$exists:true}}) 

沒有必要先查詢所有記錄到shell中,然後從它們組成一個查詢。您可以將條件直接指定給remove命令。