2013-12-10 9 views
0

Я оцениваю RethinkDB как замену Mongo из-за lack of stable Mongo drivers on Node. Я прочитал документы по адресу http://www.rethinkdb.com/api/javascript/get_all/ и задал очень простой вопрос: как мне получить документ по паре значений ключа?RethinkDB: получить документ по паре ключ-значение?

Примеры для get() говорят только об индексе. Меня не интересует индекс, а скорее другие поля. Например, я хотел бы быть в состоянии сделать:

.get({someField:SomeValue}) 

... в основном так же, как я привык с collection.find() на Монго. Но это не представляется возможным. Что я делаю не так? Выбирает ли документ этот способ, который не считается получателем?

Должен ли я использовать .filter() для этого вместо этого?

+1

Dunno, почему вы отметили это как MongoDB, это о получении материала от rethinkdb – Sammaye

+1

Снова я не уверен, почему вы думаете, что кто-нибудь из тегов MOngoDB будет знать? – Sammaye

+0

Я не думаю, что нисходящее из них, я думаю, что нижний предел заключается в том, что ваш вопрос, основанный на чрезвычайно базовом вопросе, который, очевидно, кто-то еще думает, настолько основателен, что вы не потрудились исследовать. Одно из многих многих недостатков для голосования по SO. Предыдущие комментарии по моим комментариям существовали задолго до downvote – Sammaye

ответ

4

Похоже, что Rethink's .filter является подходящим эквивалентом для поиска Mongo().

+0

Это правильно. 'get' в RethinkDB зарезервирован для доступа к документам с использованием индекса. 'filter' используется для линейного сканирования, который вы здесь делаете. –

0

В этом случае вы также можете использовать getAll(). Но прежде всего вам нужно установить это поле в индекс.

r.db('test').table('testtable').indexCreate('someField') 

Затем вы можете получить поток результатов по следующему.

r.db('test').table('testtable').getAll('SomeValue', {index :'someField'}); 

Это быстрее, чем filter().

Смежные вопросы