MongoDB shell :按类型查询仓位数据

oiopk7p5  于 2023-01-30  发布在  Go
关注(0)|答案(2)|浏览(121)

我正在尝试通过使用BinData的_id字段查询一个大型集合。
其中一些ID使用类型4的BinData:

"_id" : BinData(4,"CNDF66qIlCY92q1vFAAAAQ==")

虽然有些使用类型3的BinData:

"_id" : BinData(3,"CNDF66qJ29g92q1vFAAAEw==")

我需要找到所有具有BinData.type = 3的_id字段,并想知道是否有人在MongoDB shell中进行过这样的查询。
任何帮助将不胜感激!

iyzzxitl

iyzzxitl1#

您可以使用$where样式查询来完成此操作,因为BinData对象具有返回该“类型”的.subtype()方法:

db.collection.find(function(){ return this._id.subtype() == 3 })

请注意,默认情况下,“type”3 BinData是MongoDB 2.6中shell可用的新UUID助手生成的数据:

UUID("0123456789abcdeffedcba9876543210")
BinData(3,"ASNFZ4mrze/+3LqYdlQyEA==")
gjmwrych

gjmwrych2#

我不确定确切的原因,但在我的例子中,返回类型是Binary,而不是BinData,因此,我不得不使用sub_type属性而不是subtype()函数,正如@ NeilLunn的回答,这花了我一段时间才弄明白

相关问题