本文整理汇总了C++中DocumentStorageIterator::get方法的典型用法代码示例。如果您正苦于以下问题:C++ DocumentStorageIterator::get方法的具体用法?C++ DocumentStorageIterator::get怎么用?C++ DocumentStorageIterator::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DocumentStorageIterator
的用法示例。
在下文中一共展示了DocumentStorageIterator::get方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compare
int Document::compare(const Document& rL, const Document& rR) {
DocumentStorageIterator lIt = rL.storage().iterator();
DocumentStorageIterator rIt = rR.storage().iterator();
while (true) {
if (lIt.atEnd()) {
if (rIt.atEnd())
return 0; // documents are the same length
return -1; // left document is shorter
}
if (rIt.atEnd())
return 1; // right document is shorter
const ValueElement& rField = rIt.get();
const ValueElement& lField = lIt.get();
const int nameCmp = lField.nameSD().compare(rField.nameSD());
if (nameCmp)
return nameCmp; // field names are unequal
const int valueCmp = Value::compare(lField.val, rField.val);
if (valueCmp)
return valueCmp; // fields are unequal
rIt.advance();
lIt.advance();
}
}
示例2: compare
int Document::compare(const Document& rL,
const Document& rR,
const StringData::ComparatorInterface* stringComparator) {
DocumentStorageIterator lIt = rL.storage().iterator();
DocumentStorageIterator rIt = rR.storage().iterator();
while (true) {
if (lIt.atEnd()) {
if (rIt.atEnd())
return 0; // documents are the same length
return -1; // left document is shorter
}
if (rIt.atEnd())
return 1; // right document is shorter
const ValueElement& rField = rIt.get();
const ValueElement& lField = lIt.get();
// For compatibility with BSONObj::woCompare() consider the canonical type of values
// before considerting their names.
if (lField.val.getType() != rField.val.getType()) {
const int rCType = canonicalizeBSONType(rField.val.getType());
const int lCType = canonicalizeBSONType(lField.val.getType());
if (lCType != rCType)
return lCType < rCType ? -1 : 1;
}
const int nameCmp = lField.nameSD().compare(rField.nameSD());
if (nameCmp)
return nameCmp; // field names are unequal
const int valueCmp = Value::compare(lField.val, rField.val, stringComparator);
if (valueCmp)
return valueCmp; // fields are unequal
rIt.advance();
lIt.advance();
}
}