Oto (prawdopodobnie) lepszy mini-tutorial, jak dostać się bezpośrednio do odwagi swojej MongoDB. To może nie rozwiązać twojego konkretnego problemu, ale powinno Ci dotrzeć do wersji MongoDB SELECT * FROM table
.
Przede wszystkim będziesz potrzebować obiektu Mongo::Connection
. Jeśli używasz MongoMapper następnie można wywołać metodę connection
klasy na dowolnych MongoMapper modeli, aby uzyskać połączenie lub poprosić MongoMapper do niego bezpośrednio:
connection = YourMongoModel.connection
connection = MongoMapper.connection
Inaczej Chyba chcesz użyć from_uri
Konstruktor do budowania własnego połączenia.
Następnie trzeba dostać w swoje ręce w bazie danych, można to zrobić pomocą array access notation, metoda db
, lub uzyskać obecny jeden prosto z MongoMapper:
db = connection['database_name'] # This does not support options.
db = connection.db('database_name') # This does support options.
db = MongoMapper.database # This should be configured like
# the rest of your app.
Teraz masz ładne lśniąca instancja Mongo::DB
w twoich rękach. Ale pewnie chcą Collection
zrobić coś ciekawego i można dostać się, że przy użyciu tablicy notacji dostępu lub metodę collection
:
collection = db['collection_name']
collection = db.collection('collection_name')
Teraz masz coś, co zachowuje się trochę jak w tabeli SQL tak można count
jak wiele rzeczy ma lub kwerendy go przy find
:
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
A teraz masz, co naprawdę jesteś po: gorące z pieca. który wskazuje na dane, które Cię interesują Mongo::Cursor
jest Enumerable
więc masz dostęp do całej swojej zwykłej iteracji przyjaciół takich jak each
, first
, map
, a jednym z moich ulubionych, each_with_object
:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Istnieją również metody command
i eval
na Mongo::DB
, które mogą robić, co chcesz.
Taka zgrabna odpowiedź !!! – bragboy
jaka jest wersja mongoid? – Brandt
@newdark Nie widzę tam żadnych odniesień do Mongoida. To było oparte na jakiejkolwiek wersji MongoMappera, która była obecna sześć lat temu, którą AFAIK używał interfejsu Ruby bezpośrednio od ludzi MongoDB. –