MongoDB使用_id查找

用户名

我正在使用新版本的C ++ Mongodb驱动程序/库的最新版本(而不是旧版,26compat或C版本)以及Qt框架(Linux上的最新64b)。在同一个程序中,我已成功读取和写入数据库,并且一切正常。

我意识到这个版本是不稳定的,但是我不想要boost依赖,它是一个新项目,只有我在研究。

我不是专业程序员,因此请原谅任何知识空白。

在我的数据库中,我有一个支持集合,该集合仅记住用户正在处理的最后一个项目,而我想做的就是使用存储在该文档中的值作为带有字段名的字符串,以在程序启动时加载该项目。

我想使用存储在m_Current_Project_key变量中的键来从项目集合中加载项目数据。

在find语句后第一行下面的代码中,使用同一集合中不同的硬编码字段名称和数据执行搜索,只是为了证明该代码更通用。

我遇到的问题是让程序搜索特定的“ _id”,我可以从mongo命令行中正确地找到该集合和文档中的“ _id”。

下面代码行末尾的注释显示了我尝试过的不同操作所获得的输出。

它位于一个方法中,该方法从同一个数据库中读取不同的集合并从其中获取一个值,并将其放入m_Current_Project_key变量中,该变量是QString。

    qDebug() << m_Current_Project_key;                  // "553b976484e4b5167e39b6f1"
qDebug() << Utility::format_key(m_Current_Project_key);         // "ObjectId("553b976484e4b5167e39b6f1")" - this utility function just modifies the value passed to it to look like the output

QString test = Utility::format_key(m_Current_Project_key);
test.remove('\"');
qDebug() << test;                           // "ObjectId(553b976484e4b5167e39b6f1)"

char const *c = m_Current_Project_key.toStdString().c_str();
qDebug() << c;                          // 553b976484e4b5167e39b6f1
bsoncxx::oid hhh(c, 12);
qDebug() << hhh.get_time_t();                   // 892679010

auto cursor = db["project"].find(document{}
// << "title" << "Testing Project"
<< "_id"
<< c
//   << hhh
//   << m_Current_Project_key.toStdString()
//   << m_Current_Project_key.toStdString().c_str()
//   << Utility::format_key(m_Current_Project_key).toStdString()
//   << test.toStdString()
<< finalize);

当我使用上面的标题行时,光标仅指向一个值,而没有接下来的两行-我得到的值是我想要的文档,但是在实际情况下,程序唯一会知道的是“_ID”。项目名称可能不是唯一的。

我已经尝试过将std :: string强制转换为OID,但这未被识别为类型。

我已经做了很多谷歌搜索和尝试工作,而且我不相信没有直接的方法可以基于“ _id”来查找文档。在这些示例中,仅有的示例使用了“ _id”以外的值。

db.project.find({ "_id" : ObjectId("553b976484e4b5167e39b6f1")}, { title : 1  })

在Mongo命令行上执行我想要的操作。

我将不胜感激,因为我花了很多时间尝试。

谢谢。

亚当·米维迪(Adam Midvidy)

这里的问题是您使用了错误的bsoncxx::oid构造函数。oidstd::stringObjectId(例如"553b976484e4b5167e39b6f1"的十六进制表示形式创建a时应使用采用a的单参数构造函数stdx::string_view

正确的代码如下所示:

using bsoncxx::stdx::string_view;

auto cursor = db["project"].find(document{} 
    << "_id"
    << bsoncxx::oid{stdx::string_view{m_Current_Project_key.toStdString()}}
    << finalize
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Java在mongodb中查找ID和密码?

来自分类Dev

使用部分_id字符串查找mongodb文档

来自分类Dev

如何使用不带十六进制_id的MongoDB查找

来自分类Dev

使用 Meteor 和 MongoDB 根据 ID 数组查找用户

来自分类Dev

主义MongoDB通过ID查找

来自分类Dev

通过ID查找MongoDB文档

来自分类Dev

通过ID查找MongoDB文档

来自分类常见问题

使用mongodb查找总费用

来自分类Dev

使用mongodb查找总费用

来自分类Dev

在MongoDB中使用concat查找

来自分类Dev

使用CakePHP查找查询MongoDB

来自分类Dev

使用 ObjectId 的 mongodb 聚合查找

来自分类Dev

Spring数据mongoDB:使用Example Executor和Pageable通过子对象ID查找全部

来自分类Dev

如何使用MongoDB,Node和Monk通过字符串ID查找?

来自分类Dev

在MongoDB中按ID查找返回null

来自分类Dev

当外来字段是ID数组时的MongoDB查找

来自分类Dev

通过_id node.js查找mongodb文档mongodb本机

来自分类Dev

MongoDB,查找所有属性ID等于记录ID的文档

来自分类Dev

如何使用MongoDB从游标中查找下N个元素,不带_id并在已排序的游标上

来自分类Dev

如何在mongodb中查找文档并使用聚合查找属性?

来自分类Dev

使用MongoDB C#查找和修改

来自分类Dev

在MongoDB中使用$ in查找子文档

来自分类Dev

MongoDB使用未知密钥在集合中查找

来自分类Dev

在mongoDB中使用Monk限制查找

来自分类Dev

MongoDB使用CurrentDate查找查询比较

来自分类Dev

在MongoDB中使用LIKE等效查找

来自分类Dev

MongoDb使用动态查询对象查找

来自分类Dev

MongoDb:使用$ lookup查找深度嵌套的对象

来自分类Dev

MongoDB猫鼬使用地图查找