BCON for mongo-c-driver:由_id查找

时间:2015-01-05 08:58:19

标签: mongo-c-driver

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

如何按已知ID进行搜索?在许多方面,这是我试过的最合乎逻辑的东西:

query = BCON_NEW (
       "some_field", BCON_INT32(4),
       "_id", "{", 
           "$oid", "5414096132e0353007000017",
        "}"
    );
如果我不包含_id字段,

查询工作正常。使用_id,不返回任何内容,也没有错误。当然,db中存在带有该_id的记录。

在同一主题上,我在查询中为$形成一个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会出现问题。程序在到达那里时终止。

感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

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

bson_oid_t oid;
bson_oid_init_from_string (&oid, "5414096132e0353007000017");
query = BCON_NEW ("_id", BCON_OID(&oid));

答案 1 :(得分:1)

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

RC

解决您的第二个问题: mongo c driver: how to query documents with "_id" in a list?