我已经设法用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会出现问题。程序在到达那里时终止。
感谢任何帮助!
答案 0 :(得分:3)
如果你想通过_id找到,也许你可以这样做:
bson_oid_t oid;
bson_oid_init_from_string (&oid, "5414096132e0353007000017");
query = BCON_NEW ("_id", BCON_OID(&oid));
答案 1 :(得分:1)