2012-05-10 77 views
0

是否有任何人知道修復mongodb的API是通過ruby-mongodb-driver損壞的數據庫的情況。使用紅寶石mongodb驅動程序修復Mongodb

通過documentation看似乎沒有

任何人都可以證實。

或者任何人都可以建議我一個更好的方法來修復mongod數據庫。

目前我知道

./mongod --repair options 

./mongo 

> use [database] 
> db.repairDatabase() 

我也看到了殼選擇

./mongo --help 

options: 
    --shell    run the shell after executing files 

我如何寫一個腳本(.js文件)來修復指定的數據庫

+0

我發現'db.repairDatabase()'最方便。你不能這樣做嗎? –

+0

看看[這](http://stackoverflow.com/questions/8904991/mongodb-cant-connect-to-localhost-but-can-connect-to-localhosts-ip-address/8905337#8905337)的答案。 – benchwarmer

+0

@benchwarmer我知道我所需要的是更好的方式來從一個Ruby程序運行代碼謝謝任何方式 – Viren

回答

3

對於蒙戈shell中,數據庫名稱可以作爲可選參數給出。這是一個應該清楚的shell腳本。

repair.sh

#!/bin/sh 
if [ $# -lt 1 ] 
then echo "$0 - repair mongodb database" 
     echo "usage: $0 database-name" 
     exit 1 
fi 
mongo $1 --eval 'printjson(db.repairDatabase())' 

這裏是紅寶石1.9當量。

repair.rb

#!/bin/env ruby 
require 'mongo' 
if ARGV.length < 1 
    puts "$0 - repair mongodb database" 
    puts "usage: $0 database-name" 
    exit 1 
end 
db = Mongo::Connection.new[ARGV[0]] 
puts db.command({repairDatabase: 1}) 

有沒有在常見問題解答和文檔DB更多信息。

http://api.mongodb.org/ruby/current/file.FAQ.html

http://api.mongodb.org/ruby/current/Mongo/DB.html

導航到一些文檔並不明顯 - 我們會考慮做的更好。

+0

它是Mongo :: Connection.new(ARGV [0])或Mongo :: Connection.new.db(ARGV [0 ]) – Viren

+0

要麼它們是等價的。 –