2015-03-26 14 views
5

Mam DB o nazwie listy słów i kolekcji o nazwie rockyou.Przeczytaj plik z powłoki mongo

Mam plik o nazwie RockYou z treścią:

123456 
12345 
123456789 
password 
iloveyou 
princess 
1234567 
rockyou 
12345678 
abc123 

Co chciałbym zrobić to załadować wszystkie treści RockYou plików do RockYou zbiórki w moich list słów DB. Próbowałem wyszukiwać google, ale zasoby wydają się wąskie dla mongo. Naprawdę mógłbym skorzystać z pomocy, a także być może dobrych zasobów dla tej nowej aplikacji DB.

Dzięki!

** EDYCJA * Oto polecenie, którego użyłem i część tego, co próbowałem.

use wordlists 
db.createCollection("rockyou") 
db.rockyou.insert(copyFile(~/wordlists/rockyou)) 

Próbowałem kilka innych metod, aby wstawić ale teraz sobie sprawę, że były jeszcze bardziej, niż ten jeden ...

+0

Proszę pokazać kod próbowało pomóc poprawić go. – mins

+0

zasoby wydają się szczupłe dla mongo? Jest to jedna z najpopularniejszych baz danych i nie można znaleźć zasobów, aby rozpocząć pracę nad podstawowym problemem? –

+0

Dodałem moje polecenia, również jestem w stanie znaleźć zasoby, a nie jak to zrobić. Czy możesz mnie prowadzić? Być może nie wiem, czego szukam? Czy to nie jest dopuszczalne pytanie? Wydajesz się zdenerwowany moją ignorancją @SalvadorDali. Przykro mi, że zmarnowałem twój czas, ale miałem wrażenie, że ta strona ma pomagać ludziom z ich problemami od podstawowego do guru. – Dylan

Odpowiedz

13

Jeśli naprawdę chcesz używać tylko mongoshell, można użyć cat() command i wykonaj następujące czynności (txt nie jest konieczne, jest to po prostu jak mój plik został nazwany):

use wordlists 
var file = cat('path/to/yourFile.txt'); // read the file 
var words = file.split('\n'); // create an array of words 
for (var i = 0, l = words.length; i < l; i++){ // for every word insert it in the collection 
    db.rockyou.insert({'word': words[i]}); 
} 

ten był testowany na Mongo 3.0.1 i wyprodukował coś takiego:

{ "_id" : ObjectId("551491ee909f1a779b467cca"), "word" : "123456" } 
{ "_id" : ObjectId("551491ee909f1a779b467ccb"), "word" : "12345" } 
... 
{ "_id" : ObjectId("551491ee909f1a779b467cd3"), "word" : "abc123" } 

ale chciałbym tu logiki aplikacji (na przykład z pytona):

import pymongo 
connection = pymongo.Connection() 
collection = connection.wordlists.rockyou 

with open('path/to/yourFile.txt') as f: 
    for word in f.readlines(): 
     collection.insert({'word': word.rstrip()}) 
+0

"Jeśli zasoby są tak obfite, podaj mi link do wstawiania zwykłego pliku tekstowego w formacie innym niż JSON, a ja dam ci wszystkie moje punkty reputacji." <- To nie był link, ale nadal cieszę się, że mogę ci je przekazać. Poza tworzeniem nagrody za dwa dni, w jaki sposób mogę ci je teraz oddać? – Dylan

+0

@Dylan Dodałem link. Nagroda jest jedyną opcją, o której wiem, ale prawdę mówiąc nie jest to obowiązkowe. Napisałem to dla zabawy.Twoje pytanie byłoby o wiele lepsze, gdybyś zdecydował, że potrzebujesz tylko używać mongoshell (jeśli możesz użyć czegokolwiek, problem jest prosty, ale z mongolami trudniej jest znaleźć rozwiązanie). –

+0

lol Będę edytować moje pytanie, aby uwzględnić te informacje. Ta metoda nie będzie działać na moim dużym pliku, więc zajrzę do innych opcji, nie utknąłem przy użyciu tylko powłoki. Zgaduję, że przyjrzę się jednej z tych abstrakcji aplikacji, o których mówiłeś, takich jak pymongo. Dzięki, a ja utworzę nagrodę w 2 dni i dam ci znać, abyś mógł odpowiedzieć i mogę ci ją nagrodzić;) Powiedziałem, że zrobię to! – Dylan