2

我想在 Erlang 中使用 mongodb 作为地图。我找不到这样的例子。这是我到目前为止所拥有的:

application:start(mongodb).
Host = {localhost, 27017}.
{ok, Conn} = mongo:connect(Host).

mongo:do(safe, master, Conn, test, fun() ->
    mongo:delete(foo, {}),                 
    mongo:insert(foo, {x,1}),
    mongo:insert(foo, {a,12}),
    Pid = mongo:find(foo, {a}),    
    Result = mongo_cursor:rest(Pid),                
    mongo_cursor:close(Pid),
    Result end).

结果:

{ok,[{'_id',{<<80,138,211,178,41,152,132,104,251,0,0,35>>},
            x,1},
     {'_id',{<<80,138,211,178,41,152,132,104,251,0,0,36>>},
            a,12}]}

为什么它会创建两个地图?

4

2 回答 2

1

mongo 不是地图,是地图列表,无法自行修改地图

于 2012-10-26T18:35:37.937 回答
1

您在没有指定任何值的情况下对 MongoDB 进行两次插入_id,因此最终得到两个文档和一个自动生成的唯一 ObjectId。如果您尝试使用类似于 a 的集合mapdict您应该提供一个_id值作为键并使用repsert(又名 upsert)更新文档(如果它已经存在,或者插入,如果它不存在)。

于 2012-11-03T12:52:18.330 回答