首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过BinData子类型进行查询?

如何通过BinData子类型进行查询?
EN

Stack Overflow用户
提问于 2021-03-01 16:37:16
回答 1查看 526关注 0票数 0

我有一个mongodb集合,它一直在存储LUUID(遗留UUID,BinData子类型0x03),存储这些值的应用程序最近进行了更改,开始存储BinData子类型0x04的标准UUID。

我正在寻找一种执行find查询的方法,该查询将返回具有BinData子类型0x03UUID的所有记录。

我阅读了https://docs.mongodb.com/manual/reference/operator/query/type/$type表达式的粒度似乎只允许查询"binData",而不允许通过binData子类型查询。

我试图做一些类似db.getCollection('myCollection').find({field: { $type: "binData3" }})的事情,这当然是无效的,因为binData3不是一个有效的类型别名,只有binData才是。

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 08:55:50

MongoDB 比较/排序顺序分三个步骤对二进制数据进行比较:

  1. 首先,数据的长度或大小。
  2. 然后,由BSON一个字节子类型。
  3. 最后,通过数据,逐字节进行比较.

由于遗留UUID和当前UUID的长度相同,所以可以从类型3中的空UUID搜索到类型4中的空UUID,如下所示:

代码语言:javascript
复制
db.collection.find({ field: { 
                      $gte: BinData(3,"AAAAAAAAAAAAAAAAAA=="), 
                      $lt: UUID("00000000-0000-0000-0000-000000000000") 
}})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66426027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档