我正在尝试通过使用BinData的_id字段查询一个大型集合。其中一些ID使用类型4的BinData:
"_id" : BinData(4,"CNDF66qIlCY92q1vFAAAAQ==")
虽然有些使用类型3的BinData:
"_id" : BinData(3,"CNDF66qJ29g92q1vFAAAEw==")
我需要找到所有具有BinData.type = 3的_id字段,并想知道是否有人在MongoDB shell中进行过这样的查询。任何帮助将不胜感激!
iyzzxitl1#
您可以使用$where样式查询来完成此操作,因为BinData对象具有返回该“类型”的.subtype()方法:
$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==")
gjmwrych2#
我不确定确切的原因,但在我的例子中,返回类型是Binary,而不是BinData,因此,我不得不使用sub_type属性而不是subtype()函数,正如@ NeilLunn的回答,这花了我一段时间才弄明白
sub_type
subtype()
2条答案
按热度按时间iyzzxitl1#
您可以使用
$where
样式查询来完成此操作,因为BinData
对象具有返回该“类型”的.subtype()
方法:请注意,默认情况下,“type”3 BinData是MongoDB 2.6中shell可用的新UUID助手生成的数据:
gjmwrych2#
我不确定确切的原因,但在我的例子中,返回类型是Binary,而不是BinData,因此,我不得不使用
sub_type
属性而不是subtype()
函数,正如@ NeilLunn的回答,这花了我一段时间才弄明白