Примеры драйверов mongodb-erlang Erlang - PullRequest
4 голосов
/ 01 февраля 2012

Где я могу найти примеры использования mongodb-erlang? Единственный источник информации, который я нашел, - этот файл: https://github.com/TonyGen/mongodb-erlang/blob/master/src/mongodb_tests.erl Но он не охватывает многие основные запросы, такие как следующие (взято с сайта MongoDB):

db.collection.find().sort({name : 1, age: -1}).limit(10);
db.users.find().skip(20).limit(10);
db.things.ensureIndex({j:1});
db.things.find({colors : {$ne : "red"}});
db.collection.find({ "field" : { $gte: value } } );
db.things.find( { "x.a" : 1, "x.b" : { $gt : 1 } } )

Итак, как написать эти запросы в терминах драйвера erlang?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Для официально поддерживаемого драйвера API документирован здесь:

http://api.mongodb.org/erlang/mongodb/

Для операций поиска проверьте индекс функции, а именно:

http://api.mongodb.org/erlang/mongodb/mongo.html#find-2

Если вам это не по вкусу, вы также можете проверить драйверы сообщества:

emongo / erlmongo - у их соответствующих README и документов также есть несколько примеров:

https://bitbucket.org/rumataestor/emongo

https://github.com/wpntv/erlmongo

1 голос
/ 25 июня 2012

У меня тоже есть подобные проблемы, вот мое решение с официальным драйвером mongodb-erlang:

1. Тестовые записи mongodb:

>db.erltest.find()
{ "_id" : ObjectId("4fe80d692f6cc055a32da380"), "x" : 1, "y" : 2 }
{ "_id" : ObjectId("4fe80d702f6cc055a32da381"), "x" : 2, "y" : 3 }
{ "_id" : ObjectId("4fe80d762f6cc055a32da382"), "x" : 10, "y" : 3 }
{ "_id" : ObjectId("4fe80d7e2f6cc055a32da383"), "x" : 10, "y" : 4 }

2.Как реализовать "db.erltest.find ({x: {$ gt: 2}}) "через mongodb-erlang?

-module(mongo_test2).
-export([tmp_test/0]).
-include ("/opt/Erlang/lib/erlang/lib/mongodb-master/include/mongo_protocol.hrl").

tmp_test() ->
    application:start(mongodb),
    Host = {localhost, 27017},
    {ok, Conn} = mongo:connect(Host),
    io:format("Conn is : ~p~n", [Conn]),
    DbConn = {test, Conn},
    Cursor = mongo_query:find(DbConn, #'query'{collection=erltest, selector={x, {'$gt', 2}}}),
    process(Cursor),
    mongo:disconnect(Conn).

process({}) ->
    ok;
process(Cursor) ->
    io:format("----Cursor:~p~n", [Cursor]),
    Record = mongo:next(Cursor),
    io:format("Record:~p~n", [Record]),
    case Record of 
        {} ->
            no_more;
        _ ->        
            process(Cursor)
    end.

Резюме:

  1. Пожалуйста, укажите правильный путь сфайл * mongo_protocol.hrl *.
  2. Cursor = mongo_query:find(DbConn, #'query'{collection=erltest, selector={x, {'$gt', 2}}}) - подробный орудие.
  3. Может быть, mongodb_test.erl может предоставить вам более подробную информацию.
  4. Я новичок в эрланге, поскольку нахождение описанного выше использования у меня займет некоторое время, надеюсь, это поможетдля вас:)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...