0

我正在尝试使用 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工作。有任何想法吗?

4

1 回答 1

1

ObjectId 可以由这些运算符进行逻辑比较,Date 和 Timestamp 对象也可以。不需要将 ObjectId 表示为字符串,并且没有实际理由(至少在这种情况下)将 ObjectId 与字符串进行比较。

请注意,涉及两种不同 BSON 类型的比较将遵循此比较顺序

于 2012-10-12T16:47:15.203 回答