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 が文字列に変換できるオブジェクトであることです。gteが機能するために、それをintに変換する必要があるとは本当に思いません。何か案は?