$type
を使用します
$match
の演算子 :
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$type: 16}}} // city is a 32-bit integer
]);
数値のタイプ値は1つではないため、使用している数値のタイプを知る必要があります。
32-bit integer 16
64-bit integer 18
Double 1
または、$or
を使用します すべての種類の数値に一致する演算子:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {$or: [{city: {$type: 1}}, {city: {$type: 16}}, {city: {$type: 18}}]}}
]);
または、$not
を使用することもできます city
のすべてのドキュメントに一致する 文字列ではありません:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: {$not: {$type: 2}}}} // city is not a string
]);
更新
city
のすべてのドキュメントに一致させる 正規表現を使用できる数値文字列です:
db.zips.aggregate([
{$project : {city:{$substr:["$city",0,1]}}},
{$sort : {city : 1}},
{$match: {city: /^\d.*$/}} // city is all digits
]);