注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

snoopyxdy的博客

https://github.com/DoubleSpout

 
 
 

日志

 
 

resty-mongo 踩过的坑  

2015-06-08 16:24:44|  分类: lua |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近在用 nginx + lua + mongodb 做一个小项目,踩了里面不少坑,先做记录如下:

1、local m = mongol:new()
一个db只能用一个实例,所以有多个db需要实例化多次

2、用户名密码
要使用db:auth来做,连接多个db,要使用多个
local ok, err = db:auth(mongoConn.dbUser, mongoConn.dbPwd)

3、游标的使用
要通过如下代码使用游标
for index, item in cursor:pairs() do
...
end

4、用完记得归还
 local ok, err =  m:set_keepalive(mongoConn.max_idle_timeout, mongoConn.pool

5、aggregate的巨坑
aggregate返回的结果是大致如下:

{
"ok":1,
"result":[...]
}

我开始做的时候,根据 #result 获取数组长度,每次都比直接在mongoshell执行命令要少1,原因就在于lua的数组是从1开始的,而mongodb返回的数组第一个下标是0,后来追踪了半天的 resty-mongo 源码,终于发现其实数据没有丢,要这样循环取出数据:
for key, v in pairs(result) do
...
end

注意,这里千万不能使用 ipairs ,这样会少一个结果。
  评论这张
 
阅读(408)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016