3

我已经设法用 C 驱动程序做得更好,但坚持这个简单的点:

如何按已知 ID 进行搜索?在许多事情中,这是我尝试过的最合乎逻辑的事情:

query = BCON_NEW (
       "some_field", BCON_INT32(4),
       "_id", "{", 
           "$oid", "5414096132e0353007000017",
        "}"
    );

如果我不包含 _id 字段,查询工作正常。使用 _id,不返回任何内容,也没有错误。当然,在 db 中存在具有该 _id 的记录。

在同一主题上,我很难为 $in 查询形成一组 Id。希望这对那里也有帮助。

bson_t shiftIds;
BSON_APPEND_UTF8 (&shiftIds, "$oid", key); //Key is the shiftId string value, this goes in loop
query = BCON_NEW (
          "some_field", BCON_INT32(4),
          "shiftId", "{", 
            "$in", BCON_ARRAY(&shiftIds),
          "}"
     );

在这部分中,在 BSON_APEND_UTF8 方法中附加 $oid 会出现问题。程序在到达那里时终止。

任何帮助表示赞赏!

4

2 回答 2

3

如果你想通过_id查找,也许你可以这样做:

bson_oid_t oid;
bson_oid_init_from_string (&oid, "5414096132e0353007000017");
query = BCON_NEW ("_id", BCON_OID(&oid));
于 2015-07-04T05:01:00.367 回答
1

您的第一个问题的替代解决方案:

bson_init_from_json(query, "{\"_id\":{\"$oid\":\"5414096132e0353007000017\"}}", -1, NULL);

第二个问题的解决方案: mongo c驱动程序:如何在列表中查询带有“_id”的文档?

于 2017-06-29T01:50:18.870 回答