Mongodb c++驱动程序:如何查询元素的数组

Mongodb c++ driver: how to query for an Array for an Element

本文关键字:查询 元素 数组 驱动程序 c++ 何查询 Mongodb      更新时间:2023-10-16

与js文档相比,使用c++mongodb驱动程序的文档非常缺乏。

然而,c++驱动程序的语法通常与js语法有一对一的映射。因此,如果没有关于使用c++驱动程序的文档,模仿js代码通常是有效的。

但是对于以下任务(在js文档中找到(,我找不到合适的c++解决方案:

查询数组中的元素
若要查询数组字段是否包含至少有一个元素具有指定值,请使用筛选器{:}其中是元素值。

以下示例查询标记为数组的所有文档包含字符串"红色"作为其元素之一:

db.inventory.find( { tags: "red" } )

我当前的代码:

mongocxx::cursor cursor = 
inventoryCollection.find(bsoncxx::builder::stream::document{}
<< "tags" << "red"
<< bsoncxx::builder::stream::close_document
<< bsoncxx::builder::stream::finalize);

这将导致异常。显然,对于数组字段,不允许将字符串作为搜索查询:"tags"<lt;"红色">

我应该如何在c++中实现这一点?

我认为您正在双重关闭流。取消对stream::close_document的调用,让stream::finalize为您执行即可。