gpt4 book ai didi

c - Mongodb:C 驱动程序中的可尾游标具有最新的 "_id"

转载 作者:行者123 更新时间:2023-11-30 15:54:38 24 4
gpt4 key购买 nike

我正在尝试使用 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);
}

}

使用此代码我可以获得更新。但看看tailable游标文档,似乎我需要在外部 while 循环内运行 mongo_find 以确保获得最新条目。文档建议使用 gte 附加到查询。从文档复制

query = QUERY( "_id" << GT << lastId ).sort("$natural");

问题是 oid 是一个可以转换为字符串的对象。我真的不认为我应该将其转换为 int 以便 gte 工作。有什么想法吗?

最佳答案

ObjectId 可以通过这些运算符进行逻辑比较,Date 和 Timestamp 对象也可以。不需要将 ObjectId 表示为字符串,并且没有实际原因(至少在本例中)将 ObjectId 与字符串进行比较。

请注意,涉及两种不同 BSON 类型的比较将遵循 this compare order .

关于c - Mongodb:C 驱动程序中的可尾游标具有最新的 "_id",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com