diff --git a/chaos/common/data/CDataWrapper.cpp b/chaos/common/data/CDataWrapper.cpp index 0cd8d7df14391447c724303924d0436fffaa402c..5c809d44a907b3e988c969aeee8414477de016ba 100644 --- a/chaos/common/data/CDataWrapper.cpp +++ b/chaos/common/data/CDataWrapper.cpp @@ -811,7 +811,13 @@ CDBufferUniquePtr CDataWrapper::getBinaryValueAsCDataBuffer(const std::string& k // check if the key is present in data wrapper bool CDataWrapper::hasKey(const std::string& key) const { - return bson_has_field(ACCESS_BSON(bson), key.c_str()); + bson_iter_t iter; + bson_iter_t child; + + BSON_ASSERT (bson); + if(key.size()==0) return false; + return (bson_iter_init (&iter, ACCESS_BSON(bson)) && bson_iter_find_descendant (&iter, key.c_str(), &child)); + } bool CDataWrapper::isVector(const std::string& key) const {