【问题标题】:Compare two bson_t in C / C++在 C/C++ 中比较两个 bson_t
【发布时间】:2015-04-21 08:15:46
【问题描述】:

我需要比较两个 bson_t。我发现两个 bson_t 可能有不同的键值对序列。例如{“key1”:“val1”,“key2”:“val2”}和{“key2”:“val2”,“key1”:“val1”}。但在我的项目中它们是相同的。在这种情况下,bson_compare() 和 bson_equal() 将返回 false。如何在 C/C++ 中解决这个问题?

顺便问一下,如何在 C 或 C++ 中对这些键值对进行排序?

谢谢

【问题讨论】:

  • C != C++。一般来说,你应该选择一个
  • 我选择 C。事实上,我在我的 C++ 项目中使用了 libbson lib 和 mongodb c 驱动程序。你有什么想法吗?

标签: c++ c sorting bson


【解决方案1】:

两种方法: (1) 在 Python 中很容易做到这一点。写一个python函数。并从 C++ 程序中调用这个 python 函数。 (2) 使用 bson_iter_t 对 bson_t 中的每一个键值对进行迭代,递归进行比较。

第二种方法似乎更复杂。但我决定使用它。现在,我已经完成了部分方法。

【讨论】:

    【解决方案2】:

    bson_comparebson_equal 检查两个内容缓冲区是否相等(不仅是两个缓冲区(或内存位置)的值)。它在内部使用memcmp 来比较两个对象。因此,x==y 并不意味着 memcmp(x,y)==0

    【讨论】:

    • 在文档中,它说“bson_compare() 函数应该比较两个 bson 文档是否相等。这可以与 qsort()结合使用>。”但是我没有通过 GOOGLE 找到 qsort()qsort() 是否对 bson_t 中的键值对进行排序???
    猜你喜欢
    • 2010-11-21
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多