【问题标题】:BCON for mongo-c-driver: Find by _idmongo-c-driver 的 BCON:按 _id 查找
【发布时间】:2017-06-29 09:50:18
【问题描述】:

我已经设法用 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 会出现问题。程序在到达那里时终止。

感谢任何帮助!

【问题讨论】:

    标签: mongo-c-driver


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多