2012-02-01 75 views
4

哪裏可以找到mongodb-erlang使用示例? 我發現的唯一信息來源是這樣的文件: https://github.com/TonyGen/mongodb-erlang/blob/master/src/mongodb_tests.erl 但它不涉及許多基本的查詢,像以下(採摘從MongoDB的網站):mongodb-erlang Erlang驅動程序示例

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 } }) 

因此,如何在二郎山驅動方面寫這些查詢?

回答

2

對於官方支持的驅動程序的API被記錄在這裏:

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

對於查找操作檢查出的性能指標,具體包括:

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

如果是不您的口味,您可能還想查看社區驅動程序:

emongo/erlmongo - 它們各自的自述文件和文檔有一些例子太多:

https://bitbucket.org/rumataestor/emongo

https://github.com/wpntv/erlmongo

+0

是的,我檢查所有這些,但沒有發現的例子。 – Dfr 2012-02-02 07:11:36

+0

你確定嗎?那麼:https://github.com/JacobVorreuter/emongo/blob/master/README.markdown – 2012-02-02 10:47:18

+0

這是emongo,它有更好的記錄,毫無疑問,但我希望獲得官方驅動程序的例子 – Dfr 2012-02-02 12:56:32

1

我有這樣類似的問題也一樣,這是我與官方的MongoDB,二郎驅動程序分辨率:

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.How實行「db.erltest.find({ x:{$ gt:2}})「via 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. 我是一個Erlang新手,尋找上述使用帶我一段時間,希望這有助於您:)