我正在尝试使用 C 驱动程序为 mongo 实现可尾光标。到目前为止,我已经能够使用以下代码创建它并成功地将推送的数据导入我的进程中
cursor =mongo_find( connection, DB_TENANT_NAMESPACE, query, bson_empty( &e ), 0, 0, MONGO_TAILABLE | MONGO_AWAIT_DATA);
while(1)
{
while(mongo_cursor_next(cursor) == MONGO_OK)
{
b=mongo_cursor_bson(cursor);
if(bson_find(iterator,b,"_id"))
{
oid =bson_iterator_oid(iterator);
bson_oid_to_string(oid,&id);
printf("ID:%s\n",id);
}
}
使用此代码,我可以获得更新。但是查看可尾游标文档,似乎我需要在外部 while 循环内运行mongo_find以确保获得最新条目。文档建议使用gte附加到查询。从文档复制
query = QUERY( "_id" << GT << lastId ).sort("$natural");
问题是 oid 是一个可以转换为字符串的对象。我真的不认为我应该将其转换为int以便gte工作。有任何想法吗?