如何在mongodb中通过BinData字段的部分二进制查找?

时间:2014-12-04 11:00:25

标签: mongodb mongo-java nosql

我的mongo中有一个BinData字段,我需要用部分信息查找它。

让我们说我的bindata看起来像这样:

{ "_id" : ObjectId("5480356518e91efd34e9b5f9"), "test" : BinData(0,"dGVzdA==") }

如果我执行此查询,我会得到结果:

> db.test.find({"test" : BinData(0,"dGVzdA==")})
{ "_id" : ObjectId("5480356518e91efd34e9b5f9"), "test" : BinData(0,"dGVzdA==") }

但是我想只用二进制对象的一部分来找到它 可能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

“partial”是一个模糊的术语 - 如果你在大海捞针的任何一点上搜索一个连续的二进制数据块(针),我认为你需要一个非常不同的解决方案,也许基于二进制数据的后缀树/后缀数组。

如果要查找具有特定字节的启动的二进制数据,您可能需要考虑将数据存储为十六进制或base64编码的字符串,并使用带根的正则表达式来使用索引。但这充满了自己的危险(填充,结尾等),令人难以置信的丑陋......

是否有办法以MongoDB理解的方式存储二进制数据?那可能更容易......