-
Type: Bug
-
Resolution: Works as Designed
-
Priority: Major - P3
-
None
-
Affects Version/s: 3.3.1
-
Component/s: API, Implementation
-
Environment:Linux Fedora 28 64-bit,
Processor: Intel® Core™ i5-7300HQ CPU @ 2.50GHz × 4.
C driver 1.11.0(debug) also this problem was replicated with version 1.13.0(debug) (manually installed)
-
Fully Compatible
Hello, Dear developers!
Driver reads array elements less than two incorrectly.
1. I have this code (which selects array of TEST_CASES from collection):
auto collectionName = CollectionCnst::VARIANT;
auto collection = db.collection(collectionName);
auto doc = bsoncxx::v_noabi::builder::basic::document{};
doc = bsoncxx::v_noabi::builder::basic::document{};
doc.append(kvp(ID, bsoncxx::oid(ourVariantId)));
auto cursor = collection.find_one({doc});
if (cursor->view().length() == 0) {
// not found
throw std::exception();
}
// select testCase's
auto testCases = cursor->view()[FieldCnst::TEST_CASES].get_array();
return testCases.value;
2. I want to iterate through it (foreach loop):
for (auto &testCase: testCases) {
// do smth
}
3. If I have 1 element in collection, loop don't invokes no one time. If I have two elements, it invokes 1 time. If I have three or more array elements, it invokes exactly through all elements.