关于MongoDB的查询语句组合

shanda2254 2012-08-30 09:02:29
开发中使用了MongoDB,不是很熟悉,感觉提问这个都不知道该怎么问才好。
直接上代码好了,希望能帮忙看出问题。。

BSONObjBuilder b;
__int64 cnt = db::instance().count("offline_msg");
b.appendNumber("id", cnt);
b.appendNumber("to_id",(__int64)tar_id);
b.append("source_nick", _info.nick);
b.appendNumber("source_id",(__int64)_id);
b.appendNumber("type", (int)e_offline_cheat_msg);
time_t time_now = time(NULL);
b.appendTimeT("send_time", time_now);
b.append("details", str);
b.appendNumber("read", 0);

string the_error;
the_error = db::instance().insert_with_check_str("offline_msg", b.done());

添加记录,db::instance().insert_with_check_str是个封装函数,

string db::insert_with_check_str(const string& ns, BSONObj& b)
{
ScopedDbConnection conn(db_addr, 10000);
conn->insert(db_name+ns,b);
return conn->getLastError();
}

然后想读取 to_id为指定id 和 read 等于 0,并且添加时间在3天以内的记录
time_t time_latest = time(NULL) - 3*24*3600;
vector<BSONObj> result_v;
db::instance().find_n(result_v, "offline_msg", BSON("to_id" << (__int64)_id << "read" << 0 << "send_time" << BSON( "$gte" << time_latest )), 50);

db::instance().find_n为封装:
void db::find_n( vector<BSONObj>& out, const string&ns, BSONObj& q, int nToReturn )
{
ScopedDbConnection conn(db_addr, 10000);
return conn->findN(out, db_name+ns, Query(q), nToReturn );
}
但是这样写出后读取不出任何的条目,把find_n中的最后的
"send_time" << BSON( "$gte" << time_latest )去掉的话,可以读出所有的条目
但是单把最后的时间限定加上的话也是读不出任何条目的
查了下相关的手册,比对,也看不出什么不对的地方。。。


实在没什么招了。。。。。手比较新,如果问题傻,希望别鄙视- -谁没白痴过,花了一天查这个东东了~~
...全文
223 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mash5_paul 2012-10-19
  • 打赏
  • 举报
回复
没看懂LZ想说什么
shanda2254 2012-09-03
  • 打赏
  • 举报
回复
我的帖子啊- -,就这么沉了么?

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧