我已经设法用C驱动程序做了更好的事情,但还是停留在这一点上:
如何按已知Id进行搜索?在许多事情中,这是我尝试过的似乎最合乎逻辑的:
query = BCON_NEW (
"some_field", BCON_INT32(4),
"_id", "{",
"$oid", "5414096132e0353007000017",
"}"
);如果我不包含_id字段,查询就可以正常工作。如果使用_id,则不返回任何内容,也不返回错误。当然,具有该_id的记录存在于db中。
在同一主题中,我很难形成一个用于$in查询的Ids数组。希望这也能对此有所帮助。
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会出现问题。程序在到达那里时终止。
如有任何帮助,我们不胜感激!
发布于 2015-07-04 13:01:00
如果你想通过_id查找,也许你可以这样做:
bson_oid_t oid;
bson_oid_init_from_string (&oid, "5414096132e0353007000017");
query = BCON_NEW ("_id", BCON_OID(&oid));发布于 2017-06-29 09:50:19
第一个问题的替代解决方案:
bson_init_from_json(query, "{\"_id\":{\"$oid\":\"5414096132e0353007000017\"}}", -1, NULL);第二个问题的解决方案:mongo c driver: how to query documents with "_id" in a list?
https://stackoverflow.com/questions/27776132
复制相似问题