내가 서브 루틴에서 다음 코드를 사용하여 $ 또는 BSON 쿼리를 만들려고 해요 :
bson * outBson = bson_create();
bson_init(outBson);
bson_append_start_object(outBson, "$query");
bson_append_start_array(outBson, "$or");
bson_append_int(outBson, "cpu", 2000);
bson_append_int(outBson, "ram", 4096);
bson_append_finish_array(outBson);
bson_append_finish_object(outBson);
bson_finish(outBson);
bson_print(outBson);
하지만 mongo_find에서 내 반환 커서로 NULL 얻고있다(). 연결 mongo-> errstr 및 mongo-> err 코드를 덤핑하려했는데 그들은 모두 공백이고 0입니다.
기본적으로 $ 및 쿼리로 변경하면 bson_append_start/finish_array()를 사용하면 작동합니다 . (불행히도 $는 내가하려고했던 것이 아닙니다 ...)
누군가가 C 컴파일러를 통해 적절한 복합 쿼리 BSON을 어떻게 구성해야하는지 알려 주시면 감사하겠습니다.
몽고 쉘에서, 내 데이터는 다음과 같은있다 :
> db.test.find()
{ "_id" : ObjectId("507d20a72dfd5c5c2534d068"), "cpu" : 1600 }
{ "_id" : ObjectId("507d23602dfd5c5c2534d069"), "cpu" : 2000 }
{ "_id" : ObjectId("507d236c2dfd5c5c2534d06a"), "cpu" : 1666 }
{ "_id" : ObjectId("507d23712dfd5c5c2534d06b"), "cpu" : 2333 }
{ "_id" : ObjectId("507d254eef456cca26234013"), "cpu" : 2000, "ram" : 4096 }
> db.test.find({ $or : [ {"cpu" : 1666}, {"cpu" : 2000} ] })
{ "_id" : ObjectId("507d23602dfd5c5c2534d069"), "cpu" : 2000 }
{ "_id" : ObjectId("507d236c2dfd5c5c2534d06a"), "cpu" : 1666 }
{ "_id" : ObjectId("507d254eef456cca26234013"), "cpu" : 2000, "ram" : 4096 }
감사합니다.