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



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

假设我拥有的bindata看起来像这样:

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

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

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

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

谢谢!

"

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

如果要查找以特定字节开头的二进制数据,则可能需要考虑将数据存储为 hex 或 base64 编码字符串,并使用根正则表达式用于索引。但这充满了它自己的危险(填充、字节序等)和令人难以置信的丑陋......

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

最新更新