mongodb - 总是产生相同哈希的无序 2 字符串哈希函数

标签 mongodb algorithm go math hash

我正在尝试构建一个旅行应用程序,可以检查目的地 A 到 B 之间的价格,我有一个表以 from 的形式存储数据和 to就像是

CREATE TABLE PRICES {
   from varchar,
   to varchar
   price

问题是,如果 from = Ato = B如果我尝试搜索价格表 B -> A我没有结果。即SELECT * from prices where from = 'B' AND to = 'A'当然我可以通过像 SELECT * from prices where from = 'A' And To = 'B' OR from = 'B' and 'To' = 'A' 这样的查询来解决这个问题。

有没有一种方法可以创建一个哈希,这样我就不需要这样做了OR查询,而是我将执行类似 SELECT * from prices where hash = 'C' 的操作在这种情况下,C将是这样的值 hash(a, b) = c = hash(b,a)然后我可以存储有 c在表格中,我不需要执行 OR询问。

如果有帮助,我正在使用 Go btw,但您可以使用任何语言/伪代码提出哈希函数。

谢谢

最佳答案

对字符串进行排序,用分隔符连接并返回结果。

func abOrBa(a, b string) string {
    if a > b {
       a, b = b, a
    }
    return fmt.Sprintf("%s\t%s", a, b)
}

Run it on the playground .

费用可能不是symmetric如问题评论中所述。如果是这样,这种方法可能没有任何值(value)。

关于mongodb - 总是产生相同哈希的无序 2 字符串哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61033153/

相关文章:

c - 如何避免动态图中出现 "heap pointer spaghetti"?

ios - 在 Objective-C 中使用 CCCryptor 解密在 Go 中使用 CFB 加密的数据

javascript - Mongoose 的行为和模式

mongodb - 查找所有具有公共(public)字段的文档 mongodb

algorithm - 是否有一种类似集合的数据结构支持 O(logn) 时间的合并和 O(logn) 时间的第 k 次搜索?(n 是这个集合的大小)

algorithm - n 和一个精确整数的嵌套 for 循环的复杂性?

file - 如何验证文件是否包含要从 Go 中的 ioutil.ReadFile 编码的内容

戈朗 : why following code snippet do not write to file?

javascript - 使用 Nodejs Express 渲染带有数据的 html

mongodb - spark-mongodb库中是否有更新+推送支持?