0
我有一個mongo集合,有時候在mongo.bson.from創建的bson對象上使用mongo.insert()而不是mongo.insert.batch()名.df()。Rongongodb檢測和刪除壞文檔
請看看這個可重複的例子,首先我介紹一個壞文檔,後面跟着幾個好文檔,我試着檢測並刪除壞文檔。檢測似乎是成功的,但不是用_id刪除mongo.remove()。
如果此腳本起作用,則在檢測和移除後,length(x)應該是一個較短的記錄。
謝謝。
library(rmongodb)
ns <- "testdb.del"
mongo <- mongo.create()
mongo.drop(mongo,ns)
df1 <- data.frame(numbers=rnorm(7),alphas=letters[1:7],monumbs=1:7)
df1
b <- mongo.bson.from.df(df1)
mongo.insert(mongo,ns,b) #insert bad document
mongo.insert.batch(mongo,ns,b) #insert good documents
x <- mongo.find.all(mongo,ns)
length(x)
for(i in 1:length(x)){
if(is.na(names(x[[i]]["numbers"]))){ #bad documents don't have the names in the right place
print("bad document. Trying to remove.")
rm.id <- mongo.bson.from.list(x[[i]]["_id"]) #grab _id of bad document and turn to bson
mongo.remove(mongo,ns,rm.id) #remove it.
}
}
x <- mongo.find.all(mongo,ns)
length(x)
謝謝!這工作,我編輯我的例子重新查詢第二長度(x)之前,我意識到,否則它不會改變。 – variable 2015-03-19 21:35:39